これは本当に何時間も戸惑いました。私はインターネット全体を検索しましたが、うまくいく解決策はありませんでした。誰かが問題がどこにあるかを指摘できますか...ありがとう!自分の方言クラスを作成しました
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
ここで、列番号は最初の「YEAR」ワードの終わりにあります。
編集:これが私の設定です
<property name="dialect">MyCompanyName.MySQLDialectExtended, MyCompanyName</property>
<property name="hbm2ddl.keywords">none</property>