私たちはPostgreSQl 9.4とHibernate 5.1を使用していますが、これはやや最新のバージョンと思われます。私はPostgres 9.5が出ていることを知っていますが、9.4はあまり古くないようです。 JPAとHibernate 5.1を使用し、HQLクエリを作成します。Bitwise_andはPostgres 9.4とHibernate 5でどのように動作するのですか
データベースにbigintのフィールドがあります。これは私たちのためのビットマスクであり、整数として格納されています。 Javaコードでは、これはうまく動作しますが、ビットマスクをチェックしたいときは動作しません。
ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper -
ERROR: function bitwise_and(bigint, integer) does not exist
Hint: No function matches the given name and argument types.
You might need to add explicit type casts.
私は、生成HibernateのSQLを見ていると私たちは何か持っていることがわかります。だから、
bitwise_and(mytable_.actionbitmask, 2)>0
を、私が最初に動作するように生のSQLを取得したいし、次にしたいです私はその仕事をするために私のHQLクエリを微調整することもできます。 、HQLで行うことができない、通常のSQL を使用する必要があります。しかし、これらのほとんどは、非常に古いコメントで、Postgresは9.4であるから - :
は今、私がグーグルを検索しました、そして、すべての結果がで戻ってきますHibernateは5.1ですが、私は確かにこれでいくつかの例を挙げて考えることができます。
残念ながら、Postgresの9.4ビット操作でさえ、bitwise_と全く表示されなくても、ドキュメントはちょうどそこを吸うだけです。
HQLを実行する前に、小数点/ロングを同じ長さのバイナリに変換する必要がありますか?
ご協力いただければ幸いです。ありがとう!
[マニュアルの](https://www.postgresql.org/docs/9.4/static/index.html)で 'bitwise_and'を見つけましたか?また、あなたの質問を編集し、** complete ** SQL文を追加してください。しかし、一般に、難読化レイヤの性質は、DBMS固有のものを使用することができないということです。それらは、SQL機能のための最小限の共通点を定めています。 –