I tried using a left join
Code:
select i from Internetshop i left join i.paymentMethods p where p.class = CreditCardPayment
This does not work with joined-subclass. But the query is far away from beeing efficient. Is this a known behaviour or a stupid mistake from Sebastian.
Code:
select internetsh0_.id as id41_, internetsh0_.name as name41_ from tinternetshop internetsh0_ left outer join shop_paymentmethod paymentmet1_ on internetsh0_.id=paymentmet1_.shop_id left outer join tpayment paymentmet2_ on paymentmet1_.payment_id=paymentmet2_.id where case when paymentmet2_1_.payment_id is not null then 1 when paymentmet2_2_.payment_id is not null then 2 when paymentmet2_.id is not null then 0 end=1
but works with
subclass combined with join table.
Code:
select musicfan0_.id as id43_0_, musicgroup2_.id as id45_1_, musicfan0_.name as name43_0_, musicgroup2_.name as name45_1_,
musicgroup2_1_.cryingGroupies as cryingGr2_46_1_, musicgroup2_2_.destroyedGuitars as destroye2_47_1_, musicgroup2_.discriminator as discrimi2_45_1_
from
tmusicfan musicfan0_
left outer join musicfan_musicgroup musicgroup1_ on musicfan0_.id=musicgroup1_.musicfan_id
left outer join tmusicgroup musicgroup2_ on musicgroup1_.musicgroup_id=musicgroup2_.id
left outer join tboygroup musicgroup2_1_ on musicgroup2_.id=musicgroup2_1_.musicgroup_id
left outer join thardrock musicgroup2_2_ on musicgroup2_.id=musicgroup2_2_.musicgroup_id,
musicfan_musicgroup musicgroup3_, tmusicgroup musicgroup4_ where musicfan0_.id=musicgroup3_.musicfan_id
and musicgroup3_.musicgroup_id=musicgroup4_.id and musicgroup4_.discriminator='hardrock' and musicgroup2_2_.destroyedGuitars>150