1

HQL クエリを使用して関連エンティティからデータを取得する際に問題が発生しています。

「画像」エンティティと 1 対多の関係を持つ「写真撮影」エンティティがあります。特定の写真撮影に属するすべての画像を取得しようとしています。これは、特定のフィルタリングを取得できるように、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 に答える