문제

왼쪽 외부 조인을하고 있지만 첫 번째 테이블에만 제한 사항 만 적용 할 수 있습니다. 두 번째 테이블에도 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을 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top