2017-08-02 118 views
1

我在hibernate 4.X版本中通過示例進行了查詢,但是當我在5.2中嘗試這樣做時,它的session.createCriteria()已被棄用。在Hibernate 5.2中通過示例查詢

 Session session = getSession(); 
     Admin admin = new Admin(); 
     admin.setEmail(email); 
     admin.setPasswd(password); 
     Example adminExample = Example.create(admin); 
     Criteria cq = session.createCriteria(Admin.class).add(adminExample); 

這是我在5.2 JPA規範criteriaQuery(中棄用在新版本的方法的原因之一)怎麼辦。看到here更多細節

 Session session = getSession(); 

     CriteriaBuilder builder = session.getCriteriaBuilder(); 
     CriteriaQuery<Admin> criteria = builder.createQuery(Admin.class); 
     Root<Admin> adminRoot = criteria.from(Admin.class); 
     criteria.select(adminRoot); 
     Predicate adminPre = builder.and(builder.equal(adminRoot.get("email"), email), 
       builder.equal(adminRoot.get("password"), password)); 
     criteria.where(adminPre); 
     List<Admin> adminList = session.createQuery(criteria).getResultList(); 

所以我的問題是,我怎麼能在5.2使用查詢的例子嗎?

+0

使用新的標準,而不是傳統http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#criteria – jklee

+0

@jklee我已經在我的代碼中顯示了新的'標準「,並工作得很好,但我沒有得到如何使用它的例子查詢。 –

回答

2

JPA Criteria不支持按示例查詢,因此您需要將這些查詢重寫爲顯式謂詞。

+0

嘿弗拉德,還有一件事,如果'session.createCriteria()'被棄用,爲什麼你在新文檔中的任何地方都用它,我的意思是超過40次? –

+0

你是什麼意思?給我看一些鏈接。 –

+0

嗯..看到這個鏈接,http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#criteria在第一段,它說'Criteria API應該被視爲已棄用' ,並在第29章說**這個附錄涵蓋了遺留的Hibernate org.hibernate.Criteria API,這應該被視爲棄用**,並且仍然闡述了處理事物的棄用方式。 –