这是我的数据库架构的一部分:
所以我使用表格页面,点和项来生成我的页面布局。每个项目也绑定一个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大师都知道如何处理这个问题?
答案 0 :(得分:1)
使用NH查询时,您始终可以获得完整的对象。这意味着,您无法使用查询过滤itemsData的想法(您只需按想法找到itemsData,但这些itemsData将始终完整,并附加所有想法)。
在NH中,您可以使用过滤器。
支持从idee到itemsData的链接要容易得多。然后你只需加载Idee(你有它的id),然后你就连接了ItemsData。
class Idee
{
IList<ItemsData> ItemsData { get; private set; }
}
您只需要将其映射为反向包。