NHibernate 和 MySql 关键字
为什么Nibernate HQL不能处理以下查询:
from Deal D where (D.ApprovalDate + INTERVAL 1 Year) < current_timestamp() < (D.RenewalDate + INTERVAL -1 Year)
知道INTERVAL和YEAR是MySQL中的关键字,所以这是一种在Hql中混合Sql(除非Hql可以处理像这样的日期函数,我不知道)。方言是 MySQLDialect
执行此查询完全有效
SELECT '2005-01-01' + INTERVAL 1 Year;
Why Nibernate HQL can not handle the following query:
from Deal D where (D.ApprovalDate + INTERVAL 1 Year) < current_timestamp() < (D.RenewalDate + INTERVAL -1 Year)
knowing that INTERVAL and YEAR are keywords in MySQL, so this is kind of mixing Sql within Hql (unless Hql can handle date functions like so and I don't know) . The dialect is MySQLDialect
Its perfectly valid to execute this query
SELECT '2005-01-01' + INTERVAL 1 Year;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 Criteria Query 直接在查询中传递 Sql。像这样的
Restrictions.Sql 会将您提供的任何内容作为 sql 直接传递到数据库。
You can pass the Sql directly in the query using Criteria Query. Something like this
The Restrictions.Sql will pass whatever you give it directly to the database as sql.