2017-11-22 8 views
1

次のクエリでHQLを使用する方法はありますか?HibernateまたはHQL別のSELECTの結果を選択

SELECT userId, pwd, pwdDate FROM (SELECT userId, AES_DECRYPT(pwd, 'key_str') as pwd, pwdDate FROM UserHistory order by pwdDate desc limit 5) AS A WHERE pwd = :pwd

次のように働きました。

SELECT * FROM UserHistory order by pwdDate desc limit 5

上記SQLは休止状態に次のことができます。

Criteria criteria = session.createCriteria(UserHistory.class); criteria.addOrder(Order.desc("pwdDate")); List<UserHistory> list = criteria.setMaxResults(5).list();

答えて

1

次のように働いた。キーは、ネイティブSQL用のSQLQueryを作成することです。

String SQL = 
"SELECT A.* FROM \n" + 
"(select * \n" + 
" from user_history$ order by pwdDate desc limit 5) AS A \n" + 
"where pwd = AES_ENCRYPT(:pwd, 'key_str') \n"; 

Query query = session.createSQLQuery(SQL); 
query.setParameter("pwd", psw); 
List<UserHistory> list = query.list(); 
関連する問題