2

私の簡単なクエリ:

<CFQUERY name="thisRecipePreps" dbtype="hql">
    FROM recipeItems r
    WHERE r.recipe = <cfqueryparam value="#thisrecipeid#">
    AND r.otherRecipe_id <> <cfqueryparam value="0">
</CFQUERY>

私のオブジェクトrecipeItemsには、配列を返す「レシピ」との「多対1」の関係があります(私は信じています)。結果をrecipe_idでフィルタリングしたいのですが、そこにCFQUERYPARAMタグがない場合に機能しますが、次のようにエラーがスローされます。

Error casting an object of type java.lang.Integer to an incompatible type. This usually indicates a programming error in Java, although it could also mean you have tried to use a foreign object in a different way than it was designed.

エラーは、「thisrecipeid」変数は「整数」型ですが、「r.recipe」はそうではないことを意味していると思います。

CFQUERYPARAM を使用したい (そして使用する必要がある) のですが、使用できないようです。

洞察をありがとう

注: サイトやメンバーから、これは解決済みと思われる別の質問 ( https://stackoverflow.com/a/4185205/4575762 ) と同じ質問であるという提案を受けています。ただし、そもそも ORM/Hibernate を使用する目的を完全に無効にする 2 つのエンティティ間の関係を削除することで、この問題は解決されました。他の何かを壊して問題を解決することは、問題を解決することではありません。さらに、その質問のエラーは「NULL ポインタ」の問題を示していました。このエラーは互換性のない型の問題です。

4

1 に答える 1

0

空白は HQL dbtype で問題を引き起こす可能性があります https://blog.adamcameron.me/2013/03/whitespace-in-hql-causes-exceptions.html

于 2021-03-28T21:50:34.160 に答える