Nous avons une table avec une clé primaire composite cartographié, comme indiqué ci-dessous:NHibernate agrandir id composite à partir HQL
mapping.CompositeId().KeyReference(e => e.Node).KeyProperty(e => e.DtFr).UnsavedValue("any");
Nous devons supprimer plusieurs lignes de la table par condition complexe, par exemple n.Node.Contract.Code = "1234"
Selon le solution nous avons essayé suivante HQL:
delete from Entity n where n in (select c from Entity c where c.Node.Contract.Code = "1234")
Mais dans la requête SQL généré, il n'y a pas entre parenthèses autour des colonnes de clé primaire :
select ... from ENTITY n where n.IDNODE, n.DTFR in (select c.IDNODE, c.DTFR ...
Nous avons essayé explicitement d'ajouter entre parenthèses dans HQL (where (n) in
), mais NHibernate les ignore.
Que pouvons-nous faire pour que NHibernate génère le bon SQL?
La version de NHibernate est 4.1.1.4000
, SGBDR est Oracle 10.2
.
Le dialecte SQL est défini sur NHibernate.Dialect.Oracle10gDialect
.