我知道有很多类似的主题,但我找不到我正在寻找的答案。
我有 Message
带有 Receivers
的列表.我正在尝试获取状态为 new
的所有消息和 A
类型的接收器.我收到所有具有相应接收器但具有所有接收器的消息。我只想得到我感兴趣的接收器。
这是我正在尝试使用的内容:
var messages = session.QueryOver<MessageDTO>()
.Where(message => message.State == MessageState.New)
.JoinQueryOver<MessageReceiverDTO>(message => message.MessageReceivers)
.Where(receiver => receiver.Type == ReceiverType.A)
.TransformUsing(Transformers.DistinctRootEntity)
.List();
//.Where(message => message.MessageReceivers.Count > 0)
//.ToList();
有这方面的帮助会很棒。我也尝试使用
Select
用于从查询中获取消息和接收器,但这也不起作用。
最佳答案
尝试使用别名 QueryOver:
MessageDTO messageAlias = null;
MessageReceiverDTO receiverAlias = null;
var query =
session.QueryOver<MessageDTO>(() => messageAlias)
.JoinAlias(() => messageAlias.Receivers, () => receiverAlias)
.Where(() => messageAlias.State == MessageState.New)
.And(() => receiverAlias.Type == ReceiverType.A);
关于NHibernate JoinQueryOver 返回所有子类型条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286208/