0

是否可以通过父子关系或多对多关系在彼此不相关的两个表之间执行左连接?我发现的所有样本都只显示了这些场景。

我有以下表格,

同步 -> Id(字符串)-> EntityId(字符串)-> OtherInfo

客户 -> Id -> 其他信息

项目 -> Id -> 其他信息

Sync 是一个通用表,用于存储有关其余表的元数据。EntityId 表示这些表中的字段“Id”(在同步和其余表之间没有创建物理外键)。

我基本上想在 SQL 中执行以下查询,

选择 s。, 即 from sync s left join entity e on s.entityid = e.id /

(上面的 sql 中的实体应该替换为真实的表、客户、项目或任何其他包含同步表中的一些数据的表)。

谁能给我一些关于如何在 HQL 中表达该查询的帮助或指导?

谢谢巴勃罗。

4

2 回答 2

3

据我所知,你不能直接这样做。HQL 是面向对象的,只知道已映射的实体和关系。您可以通过执行 asession.CreateSQLQuery并使用.AddEntity来让 NHibernate 从 SQL 查询的结果构建实体结果来实现此功能。

于 2009-05-04T15:48:49.480 回答
1

这不是我知道的左连接,但它可能会给出一些指示:

http://jaychapman.blogspot.com/2007/10/nhibernate-non-mapped-joins.html

在 NH 中使用未映射的左连接是一个长期存在的问题,请注意解决方法有一些警告。在这里查看问题和第一对评论:https ://nhibernate.jira.com/browse/NH-514

于 2009-05-04T19:58:23.997 回答