我已经在我的方言子类中注册了一个SQL函数
RegisterFunction("addseconds", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(second, ?1, ?2)"));
可以在像这样的查询中使用
var q = _session.QueryOver<Event>()
.Select(
Projections.SqlFunction(
"addseconds",
NHibernateUtil.Date,
Projections.Property<Event>(x => x.DurationInSeconds),
Projections.Property<Event>(x => x.StartTime)));
产生SQL
SELECT dateadd(second,
this_.DurationInSeconds,
this_.StartTime) as y0_
FROM [Event] this_
但是我真正想要的是
SELECT MAX(dateadd(second,
this_.DurationInSeconds,
this_.StartTime)) as y0_
FROM [Event] this_
不幸的是,我似乎无法让SelectMax接受Projections.SqlFunction。能做到吗
您需要将NHUtil更新为DateTime:
RegisterFunction("addseconds", new SQLFunctionTemplate(NHibernateUtil.DateTime, "dateadd(second, ?1, ?2)"));
否则,您将只处理日期部分。
您的查询很好,您只需将其包装在Projections.Max()中,如下所示:
var q = _session.QueryOver<Event>()
.Select(Projections.Max(Projections.SqlFunction(
"addseconds",
NHibernateUtil.DateTime,
Projections.Property<Event>(y => y.DurationInSeconds),
Projections.Property<Event>(y => y.StartTime))))
.SingleOrDefault<DateTime>();
我刚刚快速编写了一个测试(与上面的命名不同),它产生了查询:
SELECT max(dateadd(second,
this_.DurationInSeconds,
this_.SomeDate)) as y0_
FROM Employee this_
问题内容: 我正在使用Nhibernate。我正在通过queryover方法编写查询。我能够像下面的代码中那样编写and子句。它的工作正常。 但是我想使用子句代替,或两者结合使用。我该如何实施。谢谢 问题答案: 语法 (如标签所示在C#中) 为: 在这种情况下,可能是这样的 (再次在C#中,问题似乎使用了VB) :
问题内容: 我正在尝试返回记录编号的历史位置 我所拥有的是: 解析大约需要1分钟,并返回如下数据: 我真正希望看到的是像这样的查询中的数据: 哪个返回 第二个查询更好,但我真的只想显示每个记录ID和位置的最后修改时间。 有人可以看到我在做什么吗?感谢您的帮助。 问题答案: 像这样 其核心是…
我使用的是Eclipselink(JPA)+GlassFish V3.1.2+NetBeans 7.1.2 我有一个带有复合主键的表:
我必须用一个特定的名称(我使用spring和Jpa)来命名扩展CrudRepository的接口,即。 所以在本例中,我有一个名为UserRepository的实体 我尝试了注释 但这行不通...
问题内容: 这是表结构 我需要一条声明,列出从最近输入的每条消息,我不知道如何执行此操作。谁能指出我正确的方向?提前谢谢。 问题答案: 应该这样做:
问题内容: 我有这样构建的mysql表: 当我做: 我得到: 为每个唯一用户生成一个唯一的post_id。 我需要gen_id列为1 2 3 4 5 6等。执行插入操作时如何增加此列。我尝试了以下方法,但无法正常工作。什么是正确的方法? 问题答案: 试试这个: