2016-04-13 36 views
0

aşağıdaki şemayı düşünün sadeceB nerede fieldB="someValue" nerede?JPA kalıtım sorgusu (Eclipse bağlantı)

ben mahzun kılmak için tedavi kullanmaya çalıştık ama B üzerinde filtre tüm üst sınıfı (A) üzerinde çalışıyor gibi görünüyor.

Bu tür bir sorgu ilk etapta mümkün mü?

cevap

2

türlerine göre filtrelemek için 'türü' anahtar kelimesi ile bir sorgu oluşturabilir ve bir C varlıkları filtrelemek için alt sorgu var: C setParameter yöntemini çağırarak geçirilen varlığın

select a 
from A a 
where type(a) = :type 
or exists (
    select 1 
    from B b 
    where b.id = a.id 
    and b.fieldB = :fieldB 
) 

sınıf türü sorgu örneği.

+1

Varolan madde için VE yerine YA'yı kullanmalısınız. – Chris

+0

Teşekkürler Chris, aptal hata benim tarafımdan. Onu düzeltti! –

+0

Evet, bu problemi similer yaklaşımını kullanarak çözdüm, ama çözmek için bir komut inşa ettim. Aslında 5 sınıf ana sınıfa sahip ve her bir alt sınıfa 2 - 3 filtre yapıyorum. türünü kullanarak veya kullanarak bir canavar sorguya yönlendiririm (bu, performansı etkileyecektir) –