3

JPA 1.0 で CriteriaQuery を使用することは可能ですか。JPA 2.0 は Java Se (バージョン -- Java(TM) SE Runtime Environment (build 1.6.0_16-b01)) では利用できないと思います。私は使用するために縛られ、

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Test> cq = cb.createQuery(Test.class);
Root<Test> test= cq.from(Test.class);

....

しかし、javax.persistence.* に CriteriaBuilder の定義が見つかりませんでした。(インポートjavax.persistence.criteria.CriteriaBuilder;も試しました)

それが不可能な場合、私が持っている最良の選択肢は何ですか。バックエンドで休止状態を使用していますが、これを行う独自の方法はありますか? そうでない場合は、休止状態で行う方法は?

ありがとう。

4

2 に答える 2

7

JPA 1.0 で CriteriaQuery を使用することは可能ですか。

いいえ、JPA 1.0 は Criteria API を指定しませんでした。Criteria API は JPA 2.0 からの新しいものの一部です。

JPA 2.0はJava SEでは利用できないと思います

JPA 1.0 も JPA 2.0 も Java SE の一部ではありません (バンドルされています)。ただし、Java SE で JPA (1.0 または 2.0) を使用することはできます。

(...) しかし、javax.persistence.* に CriteriaBuilder の定義が見つかりませんでした。

前述のとおり、これは JPA 1.0 API の一部ではありません。JPA 2.0 実装を使用していない場合は見つかりません。

それが不可能な場合、私が持っている最良の選択肢は何ですか。バックエンドで休止状態を使用していますが、これを行う独自の方法はありますか? そうでない場合は、休止状態で行う方法は?

あなたの場合の唯一のオプションは、 Criteria QueriesにHibernate の独自APIを使用することです。そのためには、にアクセスする必要があります。Session

org.hibernate.Session session = (Session) em.getDelegate(); 
Criteria crit = session.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();

参考文献

于 2010-08-13T17:17:09.627 に答える
1

JPA2 は Java SE で確実に利用できますが、デフォルトでは JDK には同梱されていません。

JPA1 仕様getCriteriaBuilder()では EntityManager のメソッドなどは規定されていないため、JPA2 にアップグレードしないと簡単に使用できない可能性があります。

Hibernate 3.5+ 用のhibernate-entitymanager.jarファイルは、Hibernate 用の JPA2 API を実装し、新しい JPA 機能を Java SE で問題なく使用できるようにする必要があります。

詳細については、Hibernate CoreおよびHibernate Entity Managerのリファレンス ドキュメント、特に Java SE での EntityManager の取得に関する後者のセクションをお勧めします。

于 2010-08-13T15:22:20.150 に答える