최대 절전 모드 기준 : 두 테이블의 제한과 함께 왼쪽 외부 조인
-
18-09-2019 - |
문제
왼쪽 외부 조인을하고 있지만 첫 번째 테이블에만 제한 사항 만 적용 할 수 있습니다. 두 번째 테이블에도 Ti가 적용되는 방법이 있습니까?
내 코드는 다음과 같습니다.
Criteria criteria = this.crudService
.initializeCriteria(Applicant.class).setFetchMode("products",
FetchMode.JOIN);.
이 작업 (신청자는 신청자 이름이 있습니다) :
criteria.add(Restrictions.eq("applicantName", "Markos")
이러한 작품 중 어느 것도 (제품이 제품의 속성을 가지고 있음)
criteria.add(Restrictions.eq("productName", "product1")
Criteria.Add (제한 .EQ ( "Products.ProductName", "Product1") // 제품 : 속성 기준 이름의 이름. DB 테이블의 이름
그리고 이것은 제가 제가 제가 제가 올바르게 이해하면 곱 속성이 신청자에게 존재하지 않는다는 말을받는 예외입니다.
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
나는 별칭을 사용하려고했지만, 이것은 내가 원하는 왼쪽 외부 조인 대신 내부 조인을 생성했다.
두 테이블에 제한을 어떻게 적용 할 수 있습니까?
업데이트:
문제는 아마도 다음과 같습니다.https://forum.hibernate.org/viewtopic.php?p=2393694
해결책
CreateAlias에서 왼쪽 외부 조인을 지정할 수 있습니다 ...
.CreateAlias("products", "p", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.Add(Restrictions.Eq("p.inventedName", inventedName));
해당 열의 제한으로 왼쪽 외부 조인을하고 있음을 알고 있습니다. 본질적으로 내부 조인으로 만듭니다. 제품이없는 지원자를 원한다면 Null 제품도 확인해야합니다.
다른 팁
업데이트:
.CreateAlias("products", "p", JoinType.LEFT_OUTER_JOIN)
.Add(Restrictions.Eq("p.inventedName", inventedName));
이 문제가 새로운 기준을 만드는 문제를 해결했으며 두 경우 모두 Left_outer_join을 사용할 수 있습니다.
제휴하지 않습니다 StackOverflow