我有一系列状态的实验室,这是我的简化课程:
LabState {
private Integer id;
private State state;
private Date date;
private String comments;
}
State{
private Integer id;
private String name;
}
Lab{
private Integer id;
private List<LabState> states = new ArrayList<LabState>();
private Date date;
private String name
}
我想通过特定实验室的 Hibernate Criteria the Last State 获取。在 mySql 中这项工作正常:
SELECT ls.* FROM labs_states les INNER JOIN
( SELECT idLab, idLabState, MAX(date) AS lastDate FROM labs_states GROUP BY idLab)
groupedLabs ON les.idLab = groupedLabs.idLab AND les.date = groupedLabs.lastDate
编辑:搜索方法:
public List<Labs> search(LabSearch labSearch) {
SessionFactory sessionFactory = hibernateTemplate.getSessionFactory();
Session session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(Lab.class);
criteria.add(Restrictions.like("name", "%" + labSearch.getName() + "%"));
if(labSearch.getState() != null){
criteria.createCriteria("states").add(Restrictions.eq("state", labSearch.getState())).addOrder(Order.asc("date")).list().get(0);
return (List<Lab>) criteria.list();
}
我不知道如何使用 Criteria 执行此操作,或者是否还有其他方法可以执行
谢谢