Oracle
 sql >> база данни >  >> RDS >> Oracle

Създайте критерии за хибернация, за да се присъедините към една и съща таблица два пъти - опитах 2 подхода с 2 грешка в разликата

Има стара грешка в Hibernate HHH-879 относно проблема с org.hibernate.QueryException: duplicate association path отвори през 2005 г. и все още е отворено...

Друг проблем е приключен без решение HHH-7882

Така че вариант 1) по-скоро не е подходящ.

Но в коментарите на горната грешка е полезно заобиколно решение се споменава с помощта на exists

Затова използвайте два пъти sqlRestriction с exists и корелирана подзаявка, филтрираща правилната категория. Ще получите само компании свързани с двете категории.

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 ) );

Това води до следната заявка, която предоставя правилния резултат

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да избегна твърде дълги грешки в необработената променлива дължина в SQL Developer?

  2. Изчисляване на разликата между две времеви марки в Oracle в милисекунди

  3. Oracle 11g Express Edition за Windows 64bit?

  4. 2 начина да получите броя на дните в месеца в Oracle

  5. Актуализирайте колоните с нулеви стойности