次の HQL クエリが失敗するのはなぜですか?
string hql = @"delete MyLog log
where
log.UtcTimestamp < :threshold and
log.Configuration.Application = :application";
session.CreateQuery(hql)
.SetDateTime("threshold", threshold)
.SetEnum("application", this.application)
.ExecuteUpdate();
選択で使用すると、同じ形式のクエリが機能します。
string hql = @"from MyLog log
where
log.UtcTimestamp < :threshold and
log.Configuration.Application = :application";
IList<MyLog> log = session.CreateQuery(hql)
.SetDateTime("threshold", threshold)
.SetEnum("application", this.application)
.List<MyLog>();
MyLog のマッピングには以下が含まれます。
References(x => x.Configuration)
.Columns("CONFIGURATION_ID")
.ReadOnly();
構成のマッピングには次が含まれます。
Map(x => x.Application, "APPLICATION_ID");
私が得るエラーは次のとおりです。
MYLOG から削除、CONFIGURATION countercon1_ where UTC_TIMESTAMP<:p0 and APPLICATION_ID=:p1; :p0 = 2010 年 4 月 10 日 17:15:52、:p1 = 7
NHibernate.Exceptions.GenericADOException: 更新クエリを実行できませんでした [SQL:
MYLOG から削除、CONFIGURATION countercon1_ どこで UTC_TIMESTAMP< ? および APPLICATION_ID= ?
] ---> Oracle.DataAccess.Client.OracleException: ORA-00933: SQL コマンドが正しく終了しませんでした