mysql - Sql 到 hibernate(带 group by 的嵌套查询)

标签 mysql hibernate hibernate-criteria

我正在尝试将我的 sql 查询转换为 hibernate 查询

 select * from user_projects where endDate is not null and startDate is not null and soft_delete=? and startDate<=? and 
endDate>=? and endDate<=? and (endDate,user_id) in (select MAX(endDate),user_id from user_projects  
where soft_delete=? group by user_id) ;

我将其转换为 hibernate 代码。 这是我的 hibernate 代码

        List<Staffing> staffing = null;
        SimpleDateFormat df = new SimpleDateFormat("yyyy MM dd");
        String dateString = df.format(duration);
            Date date = df.parse(dateString);

        DetachedCriteria maxDate=DetachedCriteria.forClass(Staffing.class);
        maxDate.setProjection(Projections.projectionList().add(Projections.groupProperty("user")).add(Projections.max("endDate"),"maxDate"));
        Criteria criteria = getCriteria();

        criteria.add(Restrictions.isNotNull("startDate")).add(Restrictions.le("startDate", new Date()));
        criteria.add(Restrictions.isNotNull("endDate")).add(Restrictions.ge("endDate", new Date()));
        criteria.add(Restrictions.eq("softDelete", false));

        criteria.add(Subqueries.le(date, maxDate));
        staffing = criteria.list();
        return staffing;

但是我正在获取对象数组列表。任何人都可以帮我正确转换它。

最佳答案

您好,您可以尝试使用这样的结果转换器

criteria.setResultTransformer(Transformers.aliasToBean(user_projects.class));

但是sql查询返回的属性名称必须与user_projects.class中的属性名称相同

关于mysql - Sql 到 hibernate(带 group by 的嵌套查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46584530/

相关文章:

mysql - 使用现有变量更新 MySQL 数据

hibernate - 通过条件查询获取表的第一行

PHP 根据类型和名称搜索

php - mysql插入通知: Array to string conversion

php - 如何清理变量以防止 sql 注入(inject) - union select?

java - Hibernate外键为主键

java - Hibernate一对多自动插入id

java - PGpoint Hibernate(反)序列化异常

java - Hibernate Criteria 查询连接示例

postgresql - 使用谓词进行日期过滤的条件查询