Existuje stará chyba Hibernate HHH-879 týkající se problému org.hibernate.QueryException: duplicate association path
otevřeno v roce 2005 a stále otevřeno...
Další problém je uzavřen bez řešení HHH-7882
Možnost 1) tedy spíše není vhodná.
Ale v komentářích k výše uvedené chybě je užitečné řešení je zmíněno pomocí exists
Použijte tedy dvakrát sqlRestriction
s exists
a korelovaný poddotaz filtrující příslušnou kategorii. Získáte pouze společnosti spojené s oběma kategoriemi.
crit.add( Restrictions.sqlRestriction(
"exists (select null from Company_Customercategory a where {alias}.company_Id = a.company_Id and a.CUSTOMERCATEGORYID = ?)",
1, IntegerType.INSTANCE ) );
crit.add( Restrictions.sqlRestriction(
"exists (select null from Company_Customercategory a where {alias}.company_Id = a.company_Id and a.CUSTOMERCATEGORYID = ?)",
6, IntegerType.INSTANCE ) );
To vede k následujícímu dotazu, který poskytuje správný výsledek
select this_.COMPANY_ID as COMPANY_ID1_2_0_, this_.COMPANY_NAME as COMPANY_NAME2_2_0_
from COMPANIES this_
where exists (select null from Company_Customercategory a
where this_.company_Id = a.company_Id and a.CUSTOMERCATEGORYID = ?) and
exists (select null from Company_Customercategory a
where this_.company_Id = a.company_Id and a.CUSTOMERCATEGORYID = ?)