如何编写ORM语句以从数据对象返回过滤后的数据?
发布时间:2020-12-15 08:49:31 所属栏目:Java 来源:网络整理
导读:好的.我刚开始在Coldfusion应用程序中使用ORM.直到现在它一直很顺利.我遇到了这个障碍.我有这两个表: 这是我用来将数据加载到页面中的代码. if的第二部分是默认加载,第一部分是用于将列表过滤到特定类别的部分. cfif form.filtercat neq '' cfset load = or
好的.我刚开始在Coldfusion应用程序中使用ORM.直到现在它一直很顺利.我遇到了这个障碍.我有这两个表:
这是我用来将数据加载到页面中的代码. if的第二部分是默认加载,第一部分是用于将列表过滤到特定类别的部分. <cfif form.filtercat neq ''> <cfset load = ormexecuteQuery('from product_spec_cats as cats inner join cats.product_spec_cat_prod_cat_lnk as link WHERE link.spl_prod_cat_id = #form.filtercat#',{},false)> <cfelse> <cfset load = entityload('product_spec_cats')> </cfif> cfelse查询返回这正是我需要的: cfif查询返回此问题,因为每个父数组中有两个子节点. 所以,我的问题是,如何编写HQL以返回与默认查询相同结构的数据,并仍然能够过滤数据? 解决方法
您正在运行的HQL正在选择product_spec_cats和product_spec_cat_prod_cat_link实体,因为您没有定义要选择的内容:
from product_spec_cats as cats inner join cats.product_spec_cat_prod_cat_lnk as link WHERE link.spl_prod_cat_id = #form.filtercat# 该查询与普通SQL查询中的select * from …基本相同.你想要做的是: select cats from product_spec_cats as cats inner join cats.product_spec_cat_prod_cat_lnk as link where link.spl_prod_cat_id = #form.filtercat# 根据您的关系设置方式,您甚至可能不需要内部联接,您可以像这样编写查询: from product_spec_cats as cats where cats.product_spec_cat_prod_cat_lnk.spl_prod_cat_id = #form.filtercat#` 最后,顺便说一句,我建议您使用查询参数,尤其是当您将表单范围中的内容粘贴到查询中时: ormExecuteQuery(" select cats from product_spec_cats as cats inner join cats.product_spec_cat_prod_cat_lnk as link where link.spl_prod_cat_id = :catID ",{ catID = form.filtercat }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |