2016-04-04 28 views
3

JPA 2.0, örneğin, JPQL ifadeleri TYPE kullanarak alt sınıf tarafından filtre için bir yöntem sağlamıştır.Alt Sınıflar üzerinde filtreleme için JPA Kriteri Oluşturucu yolu nedir?</p> <pre><code>SELECT e FROM entity e WHERE TYPE(e) = :entityType </code></pre> <p>parametre EntityType ayırt edici sütunun değeri olacaktır:

JPA ölçüt oluşturucu ile aynı şeyi elde etmek için önerilen yöntem nedir?

JPA 2.1 kullanıyorum ve şu ana kadar yeterli görünen tek çözüm, ayırıcı sütunu Java öğesi içinde salt okunur bir alan olarak eşleştirmektir, ancak desteklenen bir özellik olup olmadığından emin değilim.

+0

bir JPQL ifadesi varsa o zaman bir ölçüt eşdeğer olduğunu .. Yol bir type() yöntemine sahiptir. –

cevap

5

Örnekler

Örnek:

CriteriaBuilder cb = em.getCriteriaBuilder(); 
CriteriaQuery cq = cb.createQuery(); 
Root e = cq.from(Entity.class); 
cq.where(cb.equal(e.type(), entityType)); 
Query query = em.createQuery(cq); 
List<Entity> result = query.getResultList(); 
+0

Bu harika çalıştı. –

1

Sen Yol türü yöntemini as documented here kullanabilirsiniz: Ortak sorgular are here ait

Predicate p = cb.equal(e.type(), cb.literal(Entity.class));