2016-11-02 7 views
0

Angenommen, ich habe den Typ User, der das Objekt der Klasse Tenant mit der Eigenschaft Name enthält.JPA-Kriterien analog zu Hibernate Criteria Alias ​​

Ich möchte aus der Datenbank Benutzer auswählen, deren Mieter angegebenen Namen enthält.

In Hibernate-Kriterien kann ich dieses Ziel einfach mit Alias ​​erreichen.

List cats = session.createCriteria(User.class) 
    .createAlias("tenant", "tenant") 
    .add(Restrictions.eqProperty("tenant.name", "sampleTenant")) 
    .list(); 

Wie kann ich dasselbe mit JPA-Kriterien tun?

Vielen Dank für Ihre Hilfe.

Antwort

0

i unten bin mit der Sitzung zu bekommen und Ruhe ist das gleiche ab Sitzung

Session session = ((Session)entityManager.getDelegate()); 

Sie erkunden JPA CriteriaBuilder

+1

Vorausgesetzt, dass der zugrunde liegende JPA-Provider ist Hibernate ... – crizzis

+0

Ja, das ist korrekt crizis –

+1

, so dass Sie nicht die JPA-Kriterien verwenden (Sie verwenden die Sitzungs- und Ruhezustandskriterien), aber die Frage fragt explizit nach JPA-Kriterien ... –

0

Unter der Annahme, User ist in einer zu-Eins-Beziehung mit Tenant:

CriteriaBuilder cb = em.getCriteriaBuilder(); 
CriteriaQuery<User> cq = cb.createQuery(User.class); 
Root<User> root = cq.from(User.class); 
cq = cq.where(cb.equal(root.join("tenant").get("name"), "sampleTenant")); 
em.createQuery(cq).getResultList(); 
Verwandte Themen