我正在尝试使用标准 API 按值列表进行过滤。我怀疑这是不可能的,我只是在这里问一下。
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 列表中至少有一个 guid 的实体。
Sql 看起来像这样:
SELECT *
FROM Entity e
inner join Entity_Guids eg
on e.id = eg.Entity_FK
WHERE
eg.Guid in (subquery)
使用 Criteria API,这似乎是不可能的。
ICriteria query = session
.CreateCriteria(typeof(Entity), "e")
.Add(Subqueries.In("e.Guids", subquery))
引发异常。