关于2005年打开的问题,还有一个旧的Hibernate错误HHH-879
org.hibernate.QueryException:duplicate association path仍在打开…
其他问题已解决,但未解决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 = ?)



