【问题标题】:NHibernate (+ FluentNhibernate) : Join two detached tablesNHibernate (+ FluentNhibernate) : 加入两个分离的表
【发布时间】:2014-12-17 09:44:01
【问题描述】:

在两个具有共同属性但没有映射在一起的实体上创建连接时我不会遇到问题。

假设您有一个实体 Article,其中包含属性 FamilyCode 和具有属性 Code 和 Label 的实体 Family。

在我的映射中,Article 没有引用 Family,我不想更改它(以保持与其他内部和旧方法的兼容性)。

所以,我无法在 Nhibernate 中翻译以下查询:

SELECT f.Code, f.Label
FROM Article a
INNER JOIN Family f ON a.FamilyCode = f.Code
WHERE f.Label LIKE 'p%'

我无法使用 JoinQuery,因为我无法注入 QueryOver,而且我不知道是否可以使用 WithSubquery。

我尝试了 Future QueryOver 和 QueryOver 然后在内存中执行一个 Join(在每个 .List() 之后),但是我有太多的 Article 行,所以需要很长时间。

你有什么想法吗?

谢谢。

【问题讨论】:

    标签: join nhibernate subquery queryover


    【解决方案1】:

    我们可以使用 HQL - 但只能使用 HQL。

    可能会出现多个类,从而导致笛卡尔积或“交叉”连接。

    from Formula, Parameter
    from Formula as form, Parameter as param
    

    这就是 HQL 的方式

    SELECT f.Code, f.Label
    FROM Article a,
         Family f 
    WHERE a.FamilyCode = f.Code
    AND f.Label LIKE 'p%'
    

    检查这个9.3.2. The IQuery interface,也许这个Q & A

    【讨论】:

    • 好的,所以我不能使用 QueryOver 表示法?事实上,基本问题是我不能使用带有 Linq 表示法的 LIKE。
    • 对于像您需要的查询,答案是,您不能使用查询结束。只是 HQL。每个 ORM 都是关于映射关系的。就是这个。 NHibernate 有一个红利(HQL),我们可以打破它。但不适用于任何其他查询...
    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 2015-07-06
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多