2017-08-04 115 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())));