2011-05-06 12 views

cevap

37

sorgulamak sağlanan değerleri tek değerli yol ifade (sizin varlığın kalıcı özniteliği) değeri (veya alt sorgu yoluyla getirilen) 'dir. testler OF

ÜYE sorgulamak sağlanan değer (veya ifade ile tanımlanır) sizin tarafındaki bazı koleksiyonunda değerlerin üyesidir.

en alttaki kullanmanızı sağlar örnek varlık:

@Entity 
public class EntityA { 
    private @Id Integer id; 
    private Integer someValue; 
    @ElementCollection 
    List<Integer> listOfValues; 

    public EntityA() { } 

    public EntityA(Integer id, Integer someValue, List<Integer> listOfValues) { 
     this.id = id; 
     this.someValue = someValue; 
     this.listOfValues = listOfValues; 
    } 
} 

Ve aşağıdaki test verileri:

o someValue biri (0,1 olduğunu çünkü biz sonucunda a1 olsun aşağıdaki sorgu ile
EntityA a1 = new EntityA(1, 1, Arrays.asList(4, 5, 6)); 
EntityA a2 = new EntityA(2, 2, Arrays.asList(7, 8, 9)); 

, 3). sorguda kullanma hazır bilgi üreten aynı sonucu (EntityA DAN WHERE a.someValue IN (0, 1, 3) bir SEÇ). 7 listOfValues ​​içinde değerlerden biridir çünkü sonuç olarak a2 elde aşağıdaki sorgu ile

TypedQuery<EntityA> queryIn = em.createQuery(
    "SELECT a FROM EntityA a WHERE a.someValue IN :values", EntityA.class); 
queryIn.setParameter("values", Arrays.asList(0, 1, 3)); 
List<EntityA> resultIn = queryIn.getResultList(); 

:

TypedQuery<EntityA> queryMemberOf = em.createQuery(
    "SELECT a FROM EntityA a WHERE :value MEMBER OF a.listOfValues", EntityA.class); 
queryMemberOf.setParameter("value", 7); 
List<EntityA> resultMemberOf = queryMemberOf.getResultList(); 

(parametre olarak toplama dahil) Bu işlevsellik, JPA 2.0 tarifnamede tanımlandığı gibidir ve değildir Hazırda bekletme özelliğine sahip (yukarıdaki kod, örneğin EclipseLink ile çalışır).

7

IN testler değer değişmezleri veya sorgu parametreleri açık bir sabit listenin biri olup olmadığını. bir değer, yani aslında nesne modelinin bir parçası olan bir toplama JPA toplama mevcut olup olmadığını

MEMBER OF testleri. testler İÇİNDE

+0

bir hazırda belirli bir şey, ama İÇİNDE burada koleksiyonları ile çalışır ... ama üyesi zaten daha uygun görünüyor eğer bilmiyorum. IN kullanarak, bir sağlayıcı olarak JPA ile bir sağlayıcısını kullanarak –

+0

kullanmadı. ÜYE OF kullanmak zorunda kaldı. – Amalgovinus

İlgili konular