次のコードを使用して、データベースにクエリを実行 (試行) しています。
Query query = session.createQuery("from Trace where service = :service");
query.setParameter("service", clientRequest[0]);
clientRequest[0] は文字列の配列からのもので、サービス変数は MySQL データベースの VARCHAR(45) にマップされた POJO の文字列です。
このコードを実行すると、Hibernate は実行された SQL クエリを次のように表示します。
Hibernate: select trace0_.traceId as traceId0_, trace0_.service as service0_, trace0_.longitude as longitude0_, trace0_.latitude as latitude0_, trace0_.timestamp as timestamp0_ from trace trace0_ where trace0_.service=?
これにより、 clientRequest[0] の値がパラメーターとして正しく設定されていないと思います。
clientRequest[0] に有効な文字列が含まれていることを確認しました。クエリを作成する他の方法を試しましたが、どれも機能しませんでした。サービスは常に「?」として表示されますが、明らかな方法を使用すると、次のようになります。
Query query = session.createQuery("from Trace where service = 21");
それは当然の正しい応答を与えます
Hibernate: select trace0_.traceId as traceId0_, trace0_.service as service0_, trace0_.longitude as longitude0_, trace0_.latitude as latitude0_, trace0_.timestamp as timestamp0_ from trace trace0_ where trace0_.service=21
setParamater が正しく機能しない原因は何ですか?