Последняя запись критериев гибернации отношения «один ко многим»

#hibernate #hibernate-criteria

#переход в спящий режим #переход в спящий режим-критерии

Вопрос:

Мне нужно получить последнюю запись и основную запись one-to-many отношения с критериями гибернации. Псевдо-Sql показывает запрос, который я хочу выполнить

Table1(Master)
Таблица 2(Подробности)

 Select *  
      from Table1 tab1, Table2  tab2 
              where tab2.tab1id == tab1.id 
              and tab2.date == (  select Max(date) 
                                    from table2 where table2.tab1id == tab1.id)
  

Комментарии:

1. Вы хотите рассмотреть возможность использования HQL вместо критериев? Тогда это должно быть просто.

Ответ №1:

Я сделал это!!!

 DetachedCriteria maxFecha = DetachedCriteria
.forClass(CambiosEstado.class, "cambio")
.setProjection(Projections.max("fecha"))
.add(Property.forName("cambio.practicasEst").eqProperty("cambio2.practicasEst"));  
Criteria criteria = this.getSession().createCriteria(
PracticasEst.class);
Criteria estadosCriteria = criteria.createCriteria(
"cambiosEstados", "cambio2");
estadosCriteria.add(Restrictions.eq("estados", estados));
estadosCriteria.add(Property.forName("fecha").eq(maxFecha));
return criteria.list();
  

Мастер-класс — это PracticasEst, в котором есть коллекция CambiosEstado. запрос принимает самое практичное и последнее CambiosEstado. (Fecha — дата на испанском языке).