只是一个简单的问题。如果我有2个表连接在具有多对多关系的第3个表中,是否可以在其中一个表和连接表中编写带有表达式的ICriteria?
让我们说映射文件看起来像:
<bag name ="Bag" table="JoinTable" cascade ="none">
<key column="Data_ID"/>
<many-to-many class="Data2" column="Data2_ID"/>
</bag>
那么可以编写如下的ICriteria吗?
ICriteria crit = session.CreateCriteria(typeof(Data));
crit.Add(Expression.Eq("Name", name));
crit.Add(Expression.Between("Date", startDate, endDate));
crit.Add(Expression.Eq("Bag", data2IDNumber));
当我尝试这个时,它告诉我我期望的类型是IList,而实际的类型是Bag。
感谢。
答案 0 :(得分:1)
你应该这样做(我认为)
ICriteria crit = session.CreateCriteria (typeof(Data));
crit.Add (Expression.Eq ("Name", name));
crit.Add (Expression.Between ("Date", startDate, endDate));
crit.CreateAlias ("Bag", "b");
crit.Add (Expression.Eq ("b.Id", data2IDNumber));