Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何在criteria query和hibernate query中编写以下MYSQL查询?_Spring_Hibernate_Criteria_Criteria Api_Hibernate Criteria - Fatal编程技术网

Spring 如何在criteria query和hibernate query中编写以下MYSQL查询?

Spring 如何在criteria query和hibernate query中编写以下MYSQL查询?,spring,hibernate,criteria,criteria-api,hibernate-criteria,Spring,Hibernate,Criteria,Criteria Api,Hibernate Criteria,如何编写以下MySQL查询的条件查询和hibernate查询 SELECT * FROM (SELECT * FROM outdatadetail where algorithmno="a0025_d2" and stringno=01 ORDER BY testid desc) sub_query GROUP BY subjectid; 任何建议。据我所知,在阅读文档和查看示例后,您不需要子查询来完成您想要做的事情 String sql = "SELECT * FROM (SELECT *

如何编写以下MySQL查询的条件查询和hibernate查询

SELECT * FROM (SELECT * FROM outdatadetail where algorithmno="a0025_d2" and stringno=01 ORDER BY testid desc) sub_query GROUP BY subjectid;

任何建议。

据我所知,在阅读文档和查看示例后,您不需要子查询来完成您想要做的事情

String sql = "SELECT * FROM (SELECT * FROM outdatadetail where algorithmno='a0025_d2' and stringno=01 ORDER BY testid desc) sub_query GROUP BY subjectid;";
Session session = getSession().getSessionFactory().getCurrentSession(); 
Query query = session.createSQLQuery(sql);
基本上,您编写一个查询并设置一个投影来进行分组

Criteria query = currentSession.createCriteria(OutDataDetail.class);
query.setProjection(Projections.groupProperty("subjectid").as("subjectid"));
query.add(Restrictions.eq("algorithmno", "a0025_d2"));
query.add(Restrictions.eq("stringno", "01"));
query.addOrder(Order.desc("testid"));
return query.list();
Criteria
API本身非常有用。但是,当您开始将
投影
子查询
顺序
等类与您的
标准
结合使用时,它的真正威力就来了

如果要将
条件
API与子查询一起使用,可以执行以下操作:

DetachedCriteria subquery = currentSession.createCriteria(OutDataDetail.class);
subquery.add(Restrictions.eq("algorithmno", "a0025_d2"));
subquery.add(Restrictions.eq("stringno", "01"));
subquery.addOrder(Order.desc("testid"));

Criteria query = currentSession.createCriteria(OutDataDetail.class);
query.setProjection(Projections.groupProperty("subjectid").as("subjectid"));
query.add(Subqueries.exists(subquery);

return query.list();
两种实现都应该返回
OutDataDetail
对象的列表(假设您正在使用该对象)


免责声明:我没有尝试过任何这一点。这可能对你不起作用。这个答案是基于我过去使用
标准
API及其相关类以及Hibernate 4.1手册的知识编写的。您可以查看有关投影和分组的手册部分。

谢谢,我们如何在条件查询中执行相同的操作。我不知道我们是否可以在条件查询中编写这样的查询,所以不可能吗?