Я делаю LEFT OUTER JOIN, но я могу применять ограничения только к первой таблице. Есть ли способ применить и ко второму столу?
Вот мой код:
Criteria criteria = this.crudService
.initializeCriteria(Applicant.class).setFetchMode("products",
FetchMode.JOIN);.
Это работает (заявитель имеет свойство ApplicantName):
criteria.add(Restrictions.eq("applicantName", "Markos")
Ни одна из этих работ (продукт имеет свойство productName)
criteria.add(Restrictions.eq("productName", "product1")
attribute.add (Restrictions.eq ("products.productName", "product1") // products: название объекта
crit.add (Restrictions.eq ("Product.productName", "product1") // Product: имя таблицы БД
И это исключение, которое я получаю, говоря (если я правильно понимаю), что свойство 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
Я пытался использовать псевдоним, но это вызвало ВНУТРЕННЕЕ СОЕДИНЕНИЕ, а не ВЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ, которое я хочу.
Как я могу применить ограничения к обеим таблицам?
UPDATE:
Проблема, вероятно, такая же:
https://forum.hibernate.org/viewtopic.php?p=2393694