MySQL 查询 Hibernate Criteria

标签 mysql hibernate hibernate-criteria

我有一个包含列 idseq_idtran_date 的表格。

示例数据:

id     | seq_id | tran_date
------ | ------   --------
1      |  1     |  2016-11-01
1      |  2     |  2016-11-01
1      |  1     |  2016-11-02
1      |  2     |  2016-11-02
1      |  1     |  2016-11-12
1      |  2     |  2016-11-12

my expected result is

1      |  2     |  2016-11-02

Condition:

tran_date should be less than today (2016-11-08) and max(seq_id) record should be listed.

how to implement the Hibernate Query using criteria api to the above?

Real time MySQL query using now is as below, need to convert the same into Hibernate Criteria:

SELECT *
  FROM testtable tt 
  WHERE CONCAT(DATE_FORMAT(tt.tran_date, '%Y%m%d'), LPAD(tt.seq_id , 2, '0')) =
    (SELECT MAX(CONCAT(DATE_FORMAT(mtv1.tran_date, '%Y%m%d'), LPAD(mtv1.seq_id , 2, '0')))
    FROM testtable tt1 WHERE tt1.`Label_Id` = tt1.`id` 
    AND mtv1.tran_date<= CURRENT_DATE() GROUP BY mtv.`id`) 

最佳答案

您可以使用 Hibernate Criteria 使您的 sql 查询等效。

public YourClassName getResult() throws ParseException {
    Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2016-11-08");
    Criteria criteria = session.createCriteria(YourClassName.class);
    criteria.add(Restrictions.lt("tran_date", date));
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.max("id"), "id");
    projectionList.add(Projections.max("seq_id"), "seq_id");
    projectionList.add(Projections.max("tran_date"), "tran_date");
    criteria.setProjection(projectionList);
    criteria.setResultTransformer(new AliasToBeanResultTransformer(YourClassName.class));
    if (criteria.list().isEmpty()) {
        return null;
    } else {
        YourClassName yourClassName = (YourClassName) criteria.list().get(0);
        return yourClassName;
    }
}

关于MySQL 查询 Hibernate Criteria,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40480796/

相关文章:

mysql - 使用临时表的字段进行插入

php - 尝试将 COUNT(*) 与 SELECT 语句一起使用

java - 访问 GAE DB 给出 AccessControlException

mysql - MariaDB/MySQL 查询区分大小写吗?

java - 如何为带注释和 hbm.xml 配置的实体创建 hibernate session bean

Java JPA/Hibernate 反模式

grails - 在grails中使用HibernateCriteriaBuilder从createCriteria中提取所有字段

mysql - 如何查找在 mySQL 上创建是否已经过去了整整一周?

hibernate 标准 : Left Outer Join with restrictions on both tables

java - Hibernate Criteria Query Compiler 被替换为什么?