Sol*_*r04 3 coldfusion orm hql
好的.我刚开始在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>
Run Code Online (Sandbox Code Playgroud)
该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#
Run Code Online (Sandbox Code Playgroud)
该查询与select * from ...普通SQL查询中的查询基本相同.你想要做的是:
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#
Run Code Online (Sandbox Code Playgroud)
根据您的关系设置方式,您甚至可能不需要内部联接,您可以像这样编写查询:
from product_spec_cats as cats
where cats.product_spec_cat_prod_cat_lnk.spl_prod_cat_id = #form.filtercat#`
Run Code Online (Sandbox Code Playgroud)
最后,顺便说一句,我建议您使用查询参数,尤其是当您将form范围中的内容粘贴到查询中时:
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 });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |