Produto exibido seja o menor dentro do grupo (Criteria)

0 respostas
java
F

Tenho uma função no sistema que estou desenvolvendo que retorna uma lista de lotes em que a quantidade do lote seja maior que zero, buscando pelo nome do produto (chave estrangeira). Até esse ponto consegui. Ao fazer a pesquisa ele me retorna todos o lotes daquele produto que digitei o nome.

Porém tenho vários lotes do mesmo produto, queria realizar um filtro para que somente fosse exibido o lote que a validade é a menor entre eles, travando a opção do usuário escolher um lote do produto, sendo que tem outro que a validade é menor e poderia ser liberado logo.

public List<Lote> lotePorNomeMedicamento(String nome) {
	Session session = this.manager.unwrap(Session.class);

	Criteria criteria = session.createCriteria(Lote.class)
			// fazemos uma associação (join) com 
                       //medicamento e nomeamos como "m"
			.createAlias("medicamento", "m");

	// acessamos o nome do medicamento associado ao pedido pelo alias "m",
	// criado anteriormente
	criteria.add(Restrictions.ilike("m.nome", nome, MatchMode.ANYWHERE));
	
	// retringir lotes com quantidade zero
	criteria.add(Restrictions.gt("quantidade",0));
	
	// restringir lotes para o valor exibido seja o menor do grupo
	criteria.add(Restrictions.gt("validade", value))
	

	return criteria.addOrder(Order.asc("lote")).list();
}

Esse é o código pensei em usar o Restrictions.gt na validade, porém o valor dessas validade tem ser a menor entre os três.

Ex:

(Lote - Produto - Validade - Quantidade)

Lote01 - Produto01 - 01/02/2016 - 10

Lote02 - Produto01 - 03/02/2016 - 10

Lote03 - Produto01 - 08/02/2016 - 10

O resultado que seria exibido seria o Lote01 apenas, pois é lote do mesmo produto que a validade é a menor entre eles. Alguma sugestão? E possível fazer isso usando o Criteria?

Criado 19 de março de 2016
Respostas 0
Participantes 1