web-dev-qa-db-fra.com

Comment sélectionnez-vous une colonne en utilisant Hibernate?

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.

36
ThreaT

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?

44
rizzz86

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];

    ....
}
7
Thai Tran

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);
2
DDshah