gpt4 book ai didi

nhibernate - 使用 QueryOver 对列使用子查询

转载 作者:行者123 更新时间:2023-12-03 16:41:15 25 4
gpt4 key购买 nike

我正在尝试通过 QueryOver 获得类似于以下 SQL 的内容:

SELECT
docs.*,
(SELECT TOP 1 eventDate from events WHERE id=docs.id
AND type=4 ORDER BY eventDate DESC) as eventDate
FROM documents as docs
WHERE doc.accountId = ...

我已经接近投影,但是我不确定如何取回整个文档表。文档与事件是一对多的关系,我不想外连接,因为它会带来多个结果,内连接可能不会带回一行:
var query = QueryOver<Document>
.Where(d => d.Account == account)
.SelectList(list => list
.Select(d => d)
.Select(d => d.Events.OrderByDescending(e => e.EventDate).FirstOrDefault(e => e.Type == 4))
)
.List<object[]>()
.Select(d => return new DocumentSummary(d[0],d[1]) etc.);

是否有更简单的方法来执行列的子查询?我不愿意将其替换为在其 get 中执行查询的属性。 .

最佳答案

经过一些研究,看起来 HQL(QueryOver 转换成的)不支持子查询内的 TOP。

我的解决方案:创建一个包含计算属性的 View ,然后在映射文件中将这些属性标记为 insert="false"update="false"

关于nhibernate - 使用 QueryOver 对列使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com