LEFT OUTER JOIN を実行していますが、制限を適用できるのは最初のテーブルだけです。2番目のテーブルにも適用する方法はありますか?
これが私のコードです:
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")
criteria.add(Restrictions.eq("products.productName", "product1") // 製品: プロパティの名前 criteria.add(Restrictions.eq("Product.productName", "product1") // 製品: DB テーブルの名前
そして、これは、productName プロパティが Applicant に存在しないという例外です (正しく理解している場合)。
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
エイリアスを使用しようとしましたが、必要な LEFT OUTER JOIN ではなく、INNER JOIN が生成されました。
両方のテーブルに制限を適用するにはどうすればよいですか?
アップデート:
問題はおそらくこれと同じです: https://forum.hibernate.org/viewtopic.php?p=2393694