2017-05-16 10 views
0

述語を返すJPA2を使用して、SQl where節にbitWise演算子 '&'の条件を設定する方法がありますか?JPA2のwhere句でbitwise '&'演算子のチェックのための述語

+0

JPQLは、このような演算子をサポートしていません。これを可能にする唯一の永続性標準は、JDOとそのクエリ言語JDOQLです。 JPAを使用している場合はネイティブクエリを使用する必要があります –

+0

あなたの返信ありがとうございます。私はJPAでHIbernateを使用しています。多くのテーブル結合を持つ複雑なクエリが多数あります。適切なネイティブSQLクエリを作成することは困難です。このようなことをしようとしているEntityManager em = this.getEntityManager(); CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery query = builder.createQuery(UserDefClass.class); predicates.add(builder.equal(***ビット演算(&)演算子を受け付ける制約をここに追加する必要があります)*****)))));) query.select(UserDefClass).where(述語) ; – user8014983

+0

クライテリアでそれを行うことはできませんので、時間を無駄にしないでください –

答えて

0

1.Create NamedQuery/NativeQuery 2.Create org.hibernate.dialect.MySQLDialect

public class MySQLDialect extends org.hibernate.dialect.MySQLDialect { 
    public MySQLDialect() { 
     super(); 
     registerFunction("bitwiseAnd", new SQLFunctionTemplate(StandardBasicTypes.BIG_INTEGER, 
       "(?1 & ?2)")); 
    } 

3.Makeあなたが「hibernate.cfgに声明を下回るTEを配置してください を拡張するクラスのMySQLDialect。

以下のようなXML」

com.Mypackage.MySQLDialectあなたは上記の呼び出すことができます

4.InあなたのDAOクラス "bitwiseAndを" 方法

これは誰かに役立つことを願っています。私は、hibernate-JPAコミュニティがビットワイズ演算子のための組み込みヘルプを追加することを望みます。

関連する問題