최대 절전 모드 필터 속성을 가방에 다량의 관계가있는 가방에 적용
-
05-07-2019 - |
문제
다음 최대 절전 모드 매핑 파일을 고려하십시오.
<hibernate-mapping ...>
<class name="ContentPackage" table="contentPackages">
<id name="Id" column="id" type="int"><generator class="native" /></id>
...
<bag name="Clips" table="contentAudVidLinks">
<key column="fk_contentPackageId"></key>
<many-to-many class="Clip" column="fk_AudVidId"></many-to-many>
<filter name="effectiveDate" condition=":asOfDate BETWEEN startDate and endDate" />
</bag>
</class>
</hibernate-mapping>
다음 명령을 실행할 때 :
_session.EnableFilter("effectiveDate").SetParameter("asOfDate", DateTime.Today);
IList<ContentPackage> items = _session.CreateCriteria(typeof(ContentPackage))
.Add(Restrictions.Eq("Id", id))
.List<ContentPackage>();
결과 SQL은 클립 백에 필터 속성을 추가했지만 "클립"테이블이 아닌 중간 매핑 테이블 (ContentauDVidLinks)의 WARE 절을 가지고 있습니다.
내가 뭘 잘못하고 있죠?
해결책
그것을 알아 냈습니다. 관심있는 사람이라면 누구나 내가있었습니다 <filter>
잘못된 장소에 속성 :
전에:
<bag name="Clips" table="ctv_bb_contentAudVidLinks">
<key column="fk_contentPackageId"></key>
<many-to-many class="Clip" column="fk_AudVidId"></many-to-many>
<filter name="effectiveDate" condition=":asOfDate BETWEEN startDate and endDate" />
</bag>
후에:
<bag name="Clips" table="ctv_bb_contentAudVidLinks">
<key column="fk_contentPackageId"></key>
<many-to-many class="Clip" column="fk_AudVidId">
<filter name="effectiveDate" condition=":asOfDate BETWEEN startDate and endDate" />
</many-to-many>
</bag>
제휴하지 않습니다 StackOverflow