是否可以通过父子关系或多对多关系在两个彼此不相关的表之间执行左连接?我在周围找到的所有样本只显示这些情景。
我有以下表格,
同步 - > Id(字符串) - > EntityId(字符串) - >活动促销
客户 - > ID - >活动促销
项目 - > ID - >活动促销
Sync是一个通用表,用于存储有关其余表的元数据。 EntityId表示这些表中的字段“Id”(在sync和其余表之间没有创建物理外键)。
我基本上想在SQL中执行以下查询,
选择s。,e。 来自同步的左连接实体e在s.entityid = e.id /
上(上面的sql中的实体应该替换为真实的表,客户,项目或包含同步表中某些数据的任何其他表)。
有人可以给我一些关于如何在HQL中表达查询的帮助或指导吗?
由于 巴勃罗。
答案 0 :(得分:3)
据我所知,你不能直接这样做。 HQL是面向对象的,只知道已映射的实体和关系。您可以通过执行session.CreateSQLQuery
并使用.AddEntity
让NHibernate根据SQL查询的结果构建实体结果来实现此功能。
答案 1 :(得分:1)
这不是我所知道的左连接,但它可能会提供一些指示:
http://jaychapman.blogspot.com/2007/10/nhibernate-non-mapped-joins.html
在NH中进行未映射的左连接是一个长期存在的问题,并且要注意解决方法有一些警告。在这里查看问题和第一对评论:https://nhibernate.jira.com/browse/NH-514