1

我在使用 HQL 查询从相关实体获取数据时遇到问题。

我有一个与“图像”实体具有一对多关系的“照片拍摄”实体。我正在尝试提取属于特定 Photoshoot 的所有图像,我想使用 HQL 查询来执行此操作,以便我可以进行一些特定的过滤。

我得到的是:无法解析路径 [Photoshoot.sPhotoshootGUID],意外令牌 [Photoshoot] [FROM Image WHERE Photoshoot.sPhotoshootGUID = '889440aa-a12a-11e1-8edb-d02788828044']

我不知道为什么 - 如果我撤回 Photoshoot,我可以使用“getImages()”函数轻松获取相关图像。如果我使用完全相同的代码来获取另一个相关实体,它似乎工作正常!

这是我的实体的代码:

- - 图片 - -

<cfcomponent persistent="true" entityname="Image" table="tblImages_Base">
<!--- Identifier --->
<cfproperty name="sImageGUID" fieldtype="id" generator="guid" setter="false" />

<!--- Properties --->
<cfproperty name="sFileName" ormtype="string" />
<cfproperty name="sImageFolder" ormtype="string" dbdefault="" />

<cfproperty name="Active" ormtype="boolean" default=0 dbdefault=0 notnull="true" />

<!--- Many Images can belong to a single Photoshoot --->
<cfproperty name="Photoshoot" 
            fieldtype="many-to-one" 
            cfc="Photoshoot" 
            fkcolumn="fk_sPhotoshootGUID" 
            fetch="join"
            inverse="true"             
            />
</cfcomponent>

- - 照片拍摄 - -

<cfcomponent persistent="true" entityname="Photoshoot" table="tblPhotoshoots">
<!--- Identifier --->
<cfproperty name="sPhotoshootGUID" fieldtype="id" generator="guid" setter="false" />

<!--- Properties --->
<cfproperty name="Active" ormtype="boolean" default=0 dbdefault=0 notnull="true" />
<cfproperty name="l_ImageOrder" ormtype="text" />

<!--- One Photoshoot can contain many Images --->
<cfproperty name="Images" 
            fieldtype="one-to-many" 
            cfc="Image" 
            fkcolumn="fk_sPhotoshootGUID" 
            type="array" 
            singularname="Image"
            />
</cfcomponent>

--- HQL 查询 ---

<cfquery name="Local.objPhotoshootImages" dbtype="hql">
    FROM    Image
    WHERE   Photoshoot.sPhotoshootGUID = '889440aa-a12a-11e1-8edb-d02788828044' 
</cfquery>

如果它有所作为,我在 Railo 3.3.3.000 上运行

4

1 回答 1

1

我不确定您的 HQL 失败的原因 - 该错误可能是由于区分大小写,但在您发布的代码中,“Photoshoot”似乎是正确的。

作为一种解决方法,您可以尝试调整 HQL 以使联接明确:

<cfquery name="Local.objPhotoshootImages" dbtype="hql">
FROM    Image
WHERE   fk_sPhotoshootGUID = '889440aa-a12a-11e1-8edb-d02788828044'
</cfquery>
于 2012-05-22T07:55:04.037 回答