回答やコメントの形でフィードバックを受け取っていなかったので、このすばらしいブログ投稿に出くわしたとき、私はあきらめる準備をしていました:
カスタムHibernateパラメータータイプをJPAクエリにバインドする方法
投稿には、JPAがドライバーを介してPostgresに渡すタイプ(または基盤となるデータベースが実際にあるもの)を制御するための2つのオプションがあります。 TypedParameterValue
を使用したアプローチを採用しました 。上記の例を続けると、私のコードは次のようになります。
Query query = entityManager.createNativeQuery(sqlString, MyEntity.class);
query.setParameter("param1", new TypedParameterValue(StringType.INSTANCE, null));
query.setParameter("param2", new TypedParameterValue(DoubleType.INSTANCE, null));
List<MyEntity> = query.getResultList();
もちろん、null
を渡すのは簡単です すべて クエリのパラメータですが、これは主にテキストと二重列の構文を表示するために行っています。実際には、少なくともいくつかのパラメータがnull
ではないと予想されます。 、ただし、上記の構文は、nullまたはそれ以外のすべての値を処理します。