2017-08-04 71 views
0

我的系統中有此代碼以便讓用戶登錄系統。它在sql中使用Hibernate中的createNativeQuery。由於createCriteria已被棄用,我希望使用criteriaBuilder完成此工作。我該如何做到這一點,同時提供用戶名和密碼以匹配數據庫值?提前致謝。具有多個參數的JPA Criteria API

String sql = "Select id from login where username=:username and password=:password"; 
Query query = session.(sql); 

query.setParameter("username", login.getUsername()); 
query.setParameter("password", login.getPassword()); 

String rs = query.getSingleResult().toString(); 
return rs; 

我編碼直到這個。但嘗試提供多個條件時語法錯誤。

CriteriaBuilder builder = session.getCriteriaBuilder(); 
    CriteriaQuery<Login> criteria = builder.createQuery(Login.class); 
    Root<Login> employeeRoot=criteria.from(Login.class); 
    criteria.select(employeeRoot); 

    criteria.where(builder.equal(employeeRoot.get(login.getUsername()), "username")); 
+1

只要看看LOOH在[這裏](https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/query-criteria/ Criteria.html),在「選擇一個實體」部分,你會找到答案。希望這可以幫助你。 – zombie

+0

標準參數在此鏈接中進行了演示http://www.datanucleus.org/products/accessplatform_5_1/jpa/query.html#_criteria_api_parameters –

回答

0

嘗試:

criteria.where(builder.and(builder.equal(employeeRoot.get("username"), login.getUsername()), 
          builder.equal(employeeRoot.get("password"), login.getPassword())));