我有这个协会:
TableA 1 --- * TableB
我尝试构建一个查询,该查询返回TableA
项的列表,其中所有项(TableB
)在X
列和{{1}列中都有值}。但是那个查询似乎忽略了Y
,为什么?
或者,如何重建该查询,也许可以使用子查询?
not null condition in the X and Y column
答案 0 :(得分:1)
使用子查询过滤掉tabB-Items
中具有空值的TableA元素var subquery = QueryOver.Of<TableA>()
.JoinQueryOver(tabA => tabA.TableBItems)
.Where(tabB => tabB.X == null || tabB.Y == null)
.Select(Projections.Id());
var s = Session.QueryOver<TableA>()
.Where(tabA => tabA.SomeID == 123 && tabA.SomeNullableDate != null)
.WhereRestrictionOn(Projections.Id()).NotIn(subquery)
.JoinQueryOver(tabA => tabA.TableBItems)
.Where(tabB => tabB.X != null && tabB.Y != null)
.List<TableA>();