기준 API를 사용하여 값 목록으로 필터링하려고합니다. 나는 이것이 가능하지 않다고 의심한다, 나는 단지 여기에 확신하도록 요구하고있다.NHibernate : 조건을 사용하여 값 목록에서 필터링 쿼리
class Entity
{
int id { get; set; }
IList<Guid> Guids { get; set; }
}
매핑 :
<class name="Entity">
<id ...></id>
<bag name="Guids" table="Entity_Guids">
<key column="Entity_FK"/>
<element column="Guid"/>
</bag>
</class>
내가 GUID 목록을 (실제로이 다른 하위 쿼리입니다)이 가정 하였다. 최소한 하나의 guid가 Guids 목록에있는 모든 엔터티를 필터링하려고합니다.
SQL은 다음과 같을 것이다 : 기준 API와
SELECT *
FROM Entity e
inner join Entity_Guids eg
on e.id = eg.Entity_FK
WHERE
eg.Guid in (subquery)
이 불가능할 것으로 보인다.
ICriteria query = session
.CreateCriteria(typeof(Entity), "e")
.Add(Subqueries.In("e.Guids", subquery))
예외를 throw합니다.
제외 : 당신의 GUID를 해당 속성 (값 속성은 실제 GUID를 포함)와 기관이었고, 양방향 관계가 있다면 당신은 아마 계속이 작업을 수행 할 수
? – MatthieuGD
하위 쿼리가 분리 된 조건입니까? – MatthieuGD
예, 하위 쿼리는 DetachedCriteria입니다. 단, 'key'인수는 null이 아니어야합니다. 사전에 액세스 할 때 예외 인 것처럼 보이며 많은 것을 의미하지는 않습니다. –