私は状態のコレクションを持つ研究所を持っています。ここに私の単純化されたクラスがあります:
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 を介して 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();
}
基準でこれを行う方法、または他の方法があるかどうかわかりません
ありがとう