2017-08-04 13 views
0

システムにこのコードを入れて、ユーザーがシステムにログインできるようにしました。これは、HibernateでcreateNativeQueryを使用したSQL形式です。 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()))); 
関連する問題