基準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のリストを持っていると仮定しました。少なくとも1つのGUIDがGUIDのリストにあるすべてのエンティティをフィルタリングしたい。
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))
例外をスローします。
例外:あなたのGUIDが適切なプロパティ(Valueプロパティは、実際のGUIDが含まれている)を持つエンティティであり、双方向の関係があった場合は、おそらくまだこれを行うことができます
? – MatthieuGD
サブクエリは分離基準ですか? – MatthieuGD
はい、サブクエリはDetachedCriteriaです。ただし、引数 'key'をnullにすることはできません。それは辞書にアクセスする際の例外と思われ、それほど意味がありません。 –