我正在做一个 LEFT OUTER JOIN,但我只能在第一个表上应用限制。有没有办法也适用于第二张桌子?
这是我的代码:
Criteria criteria = this.crudService
.initializeCriteria(Applicant.class).setFetchMode("products",
FetchMode.JOIN);.
这有效(申请人有一个申请人名称属性):
criteria.add(Restrictions.eq("applicantName", "Markos")
这些都不起作用(产品具有 productName 属性)
criteria.add(Restrictions.eq("productName", "product1")
criteria.add(Restrictions.eq("products.productName", "product1") // products: 属性的名称 criteria.add(Restrictions.eq("Product.productName", "product1") // Product: the数据库表的名称
这是我收到的例外情况(如果我理解正确的话)申请人中不存在 productName 属性:
EJB Exception: ; nested exception is: org.hibernate.QueryException: could not resolve property: products.inventedName of: org.myCompany.applicant.entity.Applicant; nested exception is: org.hibernate.QueryException: could not resolve property: products.inventedName of: org.myCompany.applicant.entity.Applicant
我尝试使用别名,但这会生成一个 INNER JOIN,而不是我想要的 LEFT OUTER JOIN。
如何对两个表应用限制?
更新:
问题可能与此相同: https ://forum.hibernate.org/viewtopic.php?p=2393694