JPA - CriteriaQuery avec la clause “where”
Je sais que cela peut être une question très simple pour certains de u, mais je vais avoir un moment difficile essayer de trouver comment construire un simple Sélectionnez * à Partir de X, Où X. a = :myparam à l'aide d'un CriteriaBuilder.
Maintenant, c'est le code que j'ai réussi à la construction de la mesure:
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<MyClass1> r = cq.from(MyClass1.class);
cq.select(r);
ParameterExpression<Long> p = cb.parameter(Long.class);
cq.where(cb.equal(r.get("anotherClass.id"), p));
javax.persistence.Query q = getEntityManager().createQuery(cq);
La classe où je suis de l'application de cette requête est celui-ci:
@Entity
public class MyClass1 implements Serializable {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ANOTHERCLASS_ID")
private AnotherClass anotherClass;
...
}
@Entity
public class AnotherClass implements Serializable {
@Id
private Long id;
...
}
J'ai juste besoin de sélectionner tous les enregistrements de myclass1 "OÙ" anotherClass.id = 1L, et où j'ai mis le "1L", je sais que ça se passe dans p mais où?
C'est tout. Semble simple, mais je ne suis pas vraiment familier avec ce CriteriaBuilder chose, donc espérons que vous pouvez avoir quelques réponses.
Grâce.
OriginalL'auteur Joe Almore | 2011-11-23
Vous devez vous connecter pour publier un commentaire.
Les paramètres sont définis dans les Critères de requêtes le même qu'en JPQL natif de requêtes, vous les mettez sur la Requête.
c'est à dire
Remarque que vous utilisez un paramètre de position, d'utiliser un nom d'une passe, le nom de paramètre().
Voir,
http://en.wikibooks.org/wiki/Java_Persistence/Querying#Parameters
OriginalL'auteur James
que vous essayez d'utiliser une table jointe dans une clause where expression, si vous avez besoin d'utiliser une jointure entre tghe tableaux premier.
À condition de disposer d'un Métamodèle classes construites. Voir également le Chapitre 40 du Tutoriel Java EE.
Ce qui concerne,
Thomas
OriginalL'auteur Thomas Nagel