API Criteria

Alguém poderia me falar como fazer um criteria desse query.

OU me indicar um material muito bom sobre join e subquery com criteria


List<Solicitacao> lista = session.createQuery("select s " +
			" from Solicitacao as s " +
			" inner join FETCH s.tramitacao as t " +
			" inner join FETCH t.tipoestado as te " +
			" where t.codigo = (select max(codigo) from Tramitacao as t2 where t2.solicitacao = s.codigo) and te.estadofinal=false and data_final > current_date").list();

Na documentação explica certinho, baixe aqui: http://www.hibernate.org/docs

Na criteria você pode chamar o método createAlias para se referenciar a uma propriedade a partir da classe da classe da criteria.

List<Solicitacao> lista = criteria.createCriteria(Solicitacao.class).createAlias("tramitacao","tramitacao").createAlias("tramitacao.tipoestado",tipoEstado").

Tentei fazer a parte da navegação.
Daí após o ponto você pode continuar o código.Acredito que terá que usar uma projection para trazer o max.