2011-02-22 101 views
0

这里的ORM的查询是我的数据库架构的一部分: enter image description here与传递依赖

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

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

现在的问题是当我试图做同样的事情,但只加载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

使用NH查询时,您始终可以看到完整的对象。这意味着,你不能用查询过滤itemsData的想法(你可以通过想法找到itemsData,但是这些itemsData将始终是完整的,并附有所有的想法)。

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

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

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

你只需要将它映射为反包。

+0

好吧,不是先加载我的页面,我不得不加载Idee,然后我可以去我的页面。谢谢。 – fbernier 2011-02-23 15:26:33