sql >> Database teknologi >  >> RDS >> Oracle

Dvale Opret kriterier for at slutte sig til den samme tabel to gange - prøvet 2 tilgang med 2 forskelsfejl

Der er en gammel Hibernate-fejl HHH-879 om problemet med org.hibernate.QueryException: duplicate association path åbnet 2005 og stadig åben...

Andet problem er lukket uden løsning HHH-7882

Så mulighed 1) er snarere ikke egnet.

Men i kommentarerne til ovenstående fejl er en nyttig løsning er nævnt ved hjælp af exists

Så brug sqlRestriction to gange med exists og en korreleret underforespørgsel, der filtrerer den korrekte kategori. Du får kun virksomheder forbundet med begge kategorier.

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

Dette fører til følgende forespørgsel, som giver det korrekte resultat

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. hvordan du gør dine data vandrette

  2. Lagret procedure for at få indeksstatus i alle databaser

  3. Hvordan kan jeg slette en ikke-nul-begrænsning i Oracle, når jeg ikke kender navnet på begrænsningen?

  4. Sådan installeres Oracle på en Mac