Orm 使用CF9表单列出页面:HQL还是SQL?

Orm 使用CF9表单列出页面:HQL还是SQL?,orm,coldfusion,Orm,Coldfusion,我有一个ORM映射,它有: 弹匣对象 与某一流派有多对一的关系 以及与问题的一对多关系 我有一个管理页面,显示基本杂志信息列表、杂志类型(从链接的类型对象中查找)和当前存储的问题数量 只需使用 EntityLoad('magazine'); …但只要浏览一下控制台日志,就会发现它对杂志列表进行了一次查询,对每个不同的流派名称进行了一次查询,对每个杂志进行了一次查询,以加载该杂志的所有问题(只是为了获得数量!)。随着数据集越来越大,这将对性能造成越来越大的影响 当然,传统上我只需要一个联接的SQ

我有一个ORM映射,它有:

弹匣对象 与某一流派有多对一的关系 以及与问题的一对多关系

我有一个管理页面,显示基本杂志信息列表、杂志类型(从链接的类型对象中查找)和当前存储的问题数量

只需使用

EntityLoad('magazine');
…但只要浏览一下控制台日志,就会发现它对杂志列表进行了一次查询,对每个不同的流派名称进行了一次查询,对每个杂志进行了一次查询,以加载该杂志的所有问题(只是为了获得数量!)。随着数据集越来越大,这将对性能造成越来越大的影响

当然,传统上我只需要一个联接的SQL查询,它将在一个查询中返回我需要的所有数据。有没有一种方法可以在HQL中实现同样的效果,或者使用标准SQL查询会更好


我看过HQL的“SELECT”语法,但它不是很友好,因为它返回带有特定命名列的查询作为数组数组,使用起来不是特别愉快…

可以帮助实现这一点的是使用抓取策略。基本上,您可以向ORM发出指令,使用联接获取那些相关记录

您必须在一对多关系上设置fetch=“join”

有关此功能的更多信息,请参阅:

谢谢Terry-在这篇ORM马拉克语中有很多选项可供学习!然而,这似乎不太管用:查看日志,在加载单个杂志实体时使用联接,但在加载所有杂志时,它仍然只在主查询中加载杂志表……嗯,奇怪。您是否使用CFDump检查对象?如果是,则否定所有惰性设置。(这将导致更多的数据库查询。)不,不使用CFDump。我只是在做一个EntityLoad(),不调用任何方法,然后查看SQLlog。如果你想看的话,我已经把代码和日志放在了。。。