java - Hibernate 或 HQL 选择另一个 SELECT 的结果

标签 java mysql hibernate hql

有没有办法在以下查询中使用 HQL?

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在hibernate中可以是下面的

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

最佳答案

以下工作。关键是为 Native 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();

关于java - Hibernate 或 HQL 选择另一个 SELECT 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47426317/

相关文章:

java - 循环是否卡在某处?

java - 我正在尝试以相反的顺序迭代每个循环但无法成功

javascript - 将用户创建的 javascript 保存在数据库中是否安全?

java - 关于在java中使用hibernate和注释进行数据库查询的问题

java - 我如何修复 org.hibernate.PersistentObjectException 错误?

java - Apache HttpClient : java. security.cert.CertPathValidatorException

java - 为什么这段代码中永远不会抛出 IOException

php - 在单独的行中返回查询结果

php - 在 CodeIgniter 中获取 select 语句的空结果

java - JPA错误: InvalidDataAccessApiUsageException: detached entity passed to persist