nhibernate,检索表中的最新行
Posted
技术标签:
【中文标题】nhibernate,检索表中的最新行【英文标题】:nhibernate, Retrieve the latest row in a table 【发布时间】:2010-04-25 21:19:19 【问题描述】:一个用户可以有多个地址,但我想检索该用户的最新条目。
在 sql 中我会这样做:
SELECT TOP 1 *
FROM UserAddress
WHERE userID = @userID
如何创建具有相同逻辑的条件查询?
有 TOP 功能吗?
【问题讨论】:
【参考方案1】:假设您有一些时间戳列(例如 InsertedAt):
User user = ...;
var crit = DetachedCriteria.For<UserAddress>()
.Add(Restrictions.Eq("User", user))
.AddOrder(Order.Desc("InsertedAt"))
.SetMaxResults(1);
【讨论】:
这样可以吗? .SetMaxResults(1).UniqueResult(); ? 是的。只有一排:)【参考方案2】:由于表格内容的顺序会发生变化(重新索引等),我建议您使用一些描述的时间戳来指示哪个是最新的。然后获取按该字段排序的第一个。
【讨论】:
【参考方案3】:This post 有如何做到这一点的答案,但你不应该总是依赖TOP
来获取最新条目! (假设按时间顺序)
使用时间/索引列根据时间戳值获取最新条目。
【讨论】:
以上是关于nhibernate,检索表中的最新行的主要内容,如果未能解决你的问题,请参考以下文章