0

私は助けが必要です。Play フレームワークで sql ステートメントを使用してデータベースから選択しようとしていますが、エラーが発生し、手がかりがどこにあるのかわかりません。コードは次のとおりです。

@Transactional
public static Users findByUsernameAndPassword(String username, String password){
String hash = DigestUtils.md5Hex(password);
Query q = JPA.em().createNativeQuery("select * from USERS where" + "USERNAME=? and PASSWORD=?").setParameter(1, username).setParameter(2, password);
List<Users> users = q.getResultList();
if(users.isEmpty()){
    return null;
} else{
    return users.get(0);

エラーメッセージは次のとおりです。

[PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query]

誰か助けてください!助けていただければ幸いです!

ありがとう

4

3 に答える 3

3

ORM (オブジェクト リレーショナル マッピング) クエリで純粋な SQL を使用しています。JPA を使用すると、データベース テーブルではなく、オブジェクトとそのプロパティを使用してクエリを作成できます。

TypedQuery<Users> q = JPA.em().createQuery("select * from Users where username= :username and password= :password", Users.class);
q.setparameter("username", username);
q.setparameter("password", hash);
List<Users> users = q.getResultList();

つまり、User エンティティの名前が Users の場合、おそらく User です。

于 2012-06-21T14:09:16.360 に答える
3

クエリにいくつかのスペースがありません。それを修正してみてください:

"select * from USERS where USERNAME=? and PASSWORD=?"
于 2012-06-21T15:11:55.677 に答える