2016-09-09 13 views
3

Hibernate 5.2.2のcreateCriteria()メソッドは非推奨です。代替のソリューションとコードスニペットを入力してください。Hibernate 5.2.2のcreateCriteria()メソッドの代替コード

コード

Criteria criteria=session.createCriteria(Student3.class); 
List<Student3> studentsNameList= criteria.list();   

     for (Student3 studentName : studentsNameList) { 
      System.out.println("Student details - "+studentName.getName()+" -- "+studentName.getEmail()); } 

はグーグルでの検索私はDetachedCriteriaの代わりにcreateCriteria()を使用することができますが、それは、私はちょうど同じことを戦って行ってしまった

DetachedCriteria detachedCriteria=DetachedCriteria.forClass(Student3.class); 

答えて

3

リスト()メソッドを持っていないことがわかりました。 Hibernateのドキュメンテーションは、JPA Criteriaを使用するように言います。ここに私が思いついたものがあります...

import javax.persistence.criteria.CriteriaQuery; 

CriteriaQuery<Student3> cq = session.getCriteriaBuilder().createQuery(Student3.class); 
cq.from(Student3.class); 
List<Student3> studentsNameList = session.createQuery(cq).getResultList(); 

for (Student3 studentName : studentsNameList) { 
    System.out.println("Student details - "+studentName.getName()+" -- "+studentName.getEmail()); 
} 

エレガントではなくタイプされています。

--Update-- 私はまだ詳細にすぎ鳩が、ここで私は、実際の基準を追加することについては行くだろう方法ですされていない。

import javax.persistence.criteria.CriteriaQuery; 
CriteriaBuilder cb = session.getCriteriaBuilder(); 
CriteriaQuery<Student3> cq = cb.createQuery(Student3.class); 

Root<Student3> studentRoot = cq.from(Student3.class); 
ParameterExpression<Integer> id = cb.parameter(Integer.class); 

cq.select(studentRoot).where(cb.eq(studentRoot.get("id"),id)); 

TypedQuery<Student3> query = em.createQuery(cq); 
query.setParameter(p, 2); 
List<Student3> results = query.getResultList(); 

繰り返しますが、私はちょうどので、そこJPAを学んでいますあなたが何かを見つけたらそれについて知りたいです。

+0

コードがエラーを表示しています - タイプCriteriaQueryは一般的ではありません。引数でパラメータ化することはできません。 –

+0

インポートしていることを確認してください。 'import javax.persistence.criteria.CriteriaQuery'ではなく' import org.hibernate.criterion.CriteriaQuery' – bshouse

+1

ありがとうございます。 Restrictrictionsを追加し、このコードでProjectionsを設定するのを手伝ってもらえますか?それ以前は簡単でした。criteria.add(Restrictions.gt( "id"、2)); criteria = criteria.setProjection(Projections.property( "email") ); –

関連する問題