【问题标题】:Hibernate or HQL Select on the result of another SELECTHibernate 或 HQL 选择另一个 SELECT 的结果
【发布时间】:2017-11-22 03:28:01
【问题描述】:

有没有办法在以下查询中使用 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();

【问题讨论】:

    标签: java mysql hibernate hql


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      相关资源
      最近更新 更多