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