2016-12-17 7 views
0

JPA NamedQueryをAttributeConverterと組み合わせて使用​​すると、少し問題が発生します。JPA AttributeConverterを使用して変換されたWHERE句のObjectを持つNamedQuery

基本的には、XYZ型のフィールドxyzを持つエンティティがあります。これはAttributeConverter<XYZ, String>を使用して変換されるため、値はデータベースのVARCHARとして格納されます。これはうまく動作します。しかし、私はNamedQueryを使用してEntity.xyzを照会する方法についてはかなりよく分からない:

@NamedQuery(name="Entity.testQuery", query="SELECT e FROM Entity e WHERE e.xyz=:xyz

私はこの方法でそれをしようとすると、起動時にクラッシュを休止します。それは正しいことではありません。 HibernateにWHERE e.xyz=:xyzAsStringのような "変換されていない"(すなわちString)値を比較するように指示する方法はありますか?

敬具 ジョナス

EDIT:それは存在しないエンティティXYZに登録しようとしてe.xyzを照会しようとするため、私が思うに、クラッシュを休止。多分、これはバグです(私は、Hibernate 4.3を使用するWildFly 9.2を利用しています)

+0

なぜクラッシュするのですか?あなたに何かを伝えるのが奇妙に思えるので、例外とメッセージを表示してください。クエリにはパラメータが含まれているため、クエリが実行されるときにのみ型が必要です。 – Chris

答えて

0

パラメータの型はXYZでStringでなければなりません。 convertメソッドを使用して、必要な文字列値に対して対応するインスタンスXYZを取得します。

+0

与えられたパラメータでクエリを実行しようとしても、展開中にHibernateがクラッシュします。私は、すべての名前付きクエリは起動時に解析されると思います – JonasB

0

他の場所でいくつかの変更を加えた後、問題は発生しなくなりました。私の結論は、パラメータとして変換された属性に関連するということは間違っているようです。

ありがとうございます

関連する問題