sql >> Databáze >  >> RDS >> Oracle

Hibernate Vytvořte kritéria pro připojení ke stejné tabulce dvakrát - vyzkoušeno 2 přístup s chybou 2 rozdílu

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 = ?)



  1. Jak se vyhnout použití + v čísle verze s SQLiteAssetHelper

  2. Trailing Zero

  3. Rozdělení kontrolní tabulky serveru SQL Server

  4. Jak NTILE() funguje v SQL Server