から複合IDを展開:NHibernateは、以下に示すように我々は、マッピングされた複合主キーを持つテーブルを持ってHQL
mapping.CompositeId().KeyReference(e => e.Node).KeyProperty(e => e.DtFr).UnsavedValue("any");
我々は、複合条件によるテーブルから複数の行を削除する必要があり、例えば、n.Node.Contract.Code = "1234"
我々は次のHQLしようとしたsolutionによると:
delete from Entity n where n in (select c from Entity c where c.Node.Contract.Code = "1234")
をしかし、生成されたSQLクエリで主キー列の前後に括弧がありません:
select ... from ENTITY n where n.IDNODE, n.DTFR in (select c.IDNODE, c.DTFR ...
我々はHQL(where (n) in
)に括弧を追加するには、明示的にしようとしたが、NHibernateのは、それらを無視します。
NHibernateで正しいSQLが生成されるようにするにはどうすればよいですか?
NHibernateのバージョンは4.1.1.4000
、RDBMSはOracle 10.2
です。
SQLダイアレクトがNHibernate.Dialect.Oracle10gDialect
に設定されています。