【发布时间】:2017-10-11 09:00:52
【问题描述】:
我们有一个映射了复合主键的表,如下所示:
mapping.CompositeId().KeyReference(e => e.Node).KeyProperty(e => e.DtFr).UnsavedValue("any");
我们需要通过复杂的条件从表中删除几行,例如n.Node.Contract.Code = "1234"
根据solution我们尝试了下一个HQL:
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。
【问题讨论】:
标签: nhibernate hql composite-primary-key