ORM查询传递依赖

时间:2011-02-22 19:50:21

标签: hibernate database-design orm coldfusion hql

这是我的数据库架构的一部分: enter image description here

所以我使用表格页面,点和项来生成我的页面布局。每个项目也绑定一个itemData。创建我的所有表模型并定义它们的关系。我可以通过循环查看以下查询的结果来生成页面:

<cfset variables.page = EntityLoad("Page", {id=arguments.id}, true)>

现在问题来自于我尝试做同样的事情,但只加载来自单个“idee”的itemsData 这是一个法语的想法。我想不出用entityLoad做这个的方法,所以我尝试使用HQL:

<cfset variables.page = ORMExecuteQuery("
    select  p
        from Page p
        left join p.points po
        left join po.items it           
        left join it.itemsData id
        where p.id = :pid and id.idIdee = :iid", {pid=arguments.id, iid=session.user.idee}, true)>

似乎接近它但不是它......我有时会得到超过1行等等。

任何ORM大师都知道如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

使用NH查询时,您始终可以获得完整的对象。这意味着,您无法使用查询过滤itemsData的想法(您只需按想法找到itemsData,但这些itemsData将始终完整,并附加所有想法)。

在NH中,您可以使用过滤器。

支持从idee到itemsData的链接要容易得多。然后你只需加载Idee(你有它的id),然后你就连接了ItemsData。

class Idee
{
  IList<ItemsData> ItemsData { get; private set; }
}

您只需要将其映射为反向包。