2
这真的困惑了几个小时,我在互联网上搜索,但没有工作的解决方案。有人可以指出问题所在......谢谢! 我创造了我自己的方言类如何在Nhibernate中使用MySql的date_add?
public class MySQLDialectExtended : MySQLDialect
{
public MySQLDialectExtended()
{
RegisterFunction("date_add_interval", new SQLFunctionTemplate(NHibernateUtil.Date, "date_add(?1, INTERVAL ?2 ?3)"));
}
}
然后我尝试如下使用它:
query.Append(
" (date_add_interval(D.ApprovalDate, 1, YEAR) < current_timestamp() < date_add_interval(D.RenewalDate, -1, YEAR))");
它失败,以下情况除外:
NHibernate.Hql.Ast.ANTLR.QuerySyntaxException : Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 677
其中列数是在第一个“年”字的结尾。
编辑: 这里是我的配置
<property name="dialect">MyCompanyName.MySQLDialectExtended, MyCompanyName</property>
<property name="hbm2ddl.keywords">none</property>
它的一个长查询和无关的问题,我创建了一个较短的版本 类型'Antlr.Runtime.NoViableAltException'的异常被抛出。靠近第1行,第266列[从MBIgnition.Core.Domain.Model.Deal D选择不同的D,其中1 = 1和((D.MortgageStatus = 30)或(D.MortgageStatus = 35)或(D.MortgageStatus = 40) (D.MortgageStatus = 45)或(D.MortgageStatus = 55)或(D.MortgageStatus = 50))和((和(date_add_interval(D.ApprovalDate,1,YEAR))
2010-04-17 13:24:35
你说得对,那个查询格式不正确。我修好了,但仍然出现这个错误: NHibernate.Hql.Ast.ANTLR.QuerySyntaxException:抛出了类型为'Antlr.Runtime.NoViableAltException'的异常。第1列133列[从MBIgnition.Core.Domain.Model.Deal D选择不同的D,其中1 = 1和((1 = 1且(date_add_interval(D.ApprovalDate,1,YEAR)
2010-04-18 17:10:27