Je voudrais sélectionner une seule colonne au lieu d'un objet entier, en utilisant Hibernate. Jusqu'à présent, j'ai ceci:
List<String> firstname = null;
firstname = getSession().createCriteria(People.class).list();
Mon problème est que le code ci-dessus renvoie la table People entière en tant qu'objet au lieu de simplement "prénom". Je ne sais pas comment spécifier de ne renvoyer que "prénom" au lieu de l'objet entier.
Vous pouvez définir la projection pour cela comme:
.setProjection(Projections.property("firstname"))
Avec cela, vous ne pouvez obtenir le prénom qu'en retour.
J'ai trouvé un autre lien sur la pile avec le même scénario. J'espère que cela vous aidera également Comment utiliser les critères de mise en veille prolongée pour renvoyer un seul élément d'un objet au lieu de l'objet entier?
Si vous devez interroger 2 colonnes ou plus et obtenir les valeurs de la requête, voici la façon de procéder:
....
crit.setProjection(Projections.property("firstname"));
crit.setProjection(Projections.property("lastname"));
List result = crit.list();
...
for (Iterator it = result.iterator(); it.hasNext(); ) {
Object[] myResult = (Object[]) it.next();
String firstname = (String) myResult[0];
String lastname = (String) myResult[1];
....
}
Vous pouvez utiliser ProjectionList si vous voulez une projection de base de condition, par exemple
ProjectionList prjection = Projections.projectionList();
if(abc){
prjection.add(Projections.property("firstname"));
}
else if(xyz){
prjection.add(Projections.property("lastname"));
}
........
criteria.setProjection(prjection);