que tienen las siguientes dos tablas:NHibernate - Izquierda une
Empleo areaid, JobNo (clave compuesta)
Registros LOGID, areaid, JobNo
que necesitan para obtener todos los puestos de trabajo que no tienen ningún registro asociado con ellos. En SQL podría hacer:
SELECT Jobs.AreaID,
Jobs.JobNo
FROM Jobs
LEFT JOIN Logs
ON Jobs.AreaID = Logs.AreaID
AND Jobs.JobNo = Logs.JobNo
WHERE Logs.LogID is null
Pero no estoy seguro de cómo lograr esto con NHibernate. ¿Alguien podría ofrecer alguna sugerencia?
Éstos son mis asignaciones:
<class name="Job" table="Jobs">
<composite-key name="Id">
<key-property name="JobNo"/>
<key-many-to-one name="Area" class="Area" column="AreaID"/>
</composite-key>
</class>
<class name="Log" table="Logs">
<id name="Id" column="LogID">
<generator class="identity"/>
</id>
<property name="JobNo"/>
<many-to-one name="Area" class="Area" column="AreaID"/>
</class>
Gracias
Actualizar
OK, he modificado la respuesta de Nosila un poco, y esto ahora está haciendo lo que quería:
Log logs = null;
return session.QueryOver<Job>()
.Left.JoinAlias(x => x.Logs,() => logs)
.Where(x => logs.Id == null)
.List<Job>();
También tuve que agregar esto a mi trabajo mapeo:
<bag name="Logs">
<key>
<column name="JobNo"></column>
<column name="DivisionID"></column>
</key>
<one-to-many class="Log"/>
</bag>
Gracias por la ayuda. :)
¿Puede publicar la consulta que tiene ahora? – Nosila
La consulta SQL anterior es actualmente lo que estoy usando. Estoy aprendiendo NH en este momento y estoy tratando de convertir una pequeña aplicación para usarlo. – Tom
¿Tiene sus asignaciones creadas? Además, alguien me corrige si me equivoco, pero creo que necesita NHibernate 3.2 para agregar condiciones a su unión (utilizando la API 'QueryOver', de todos modos). – Nosila