Preciso fazer um filtro de pesquisa que Liste os Documentos que possuem em sua List o idPresentation selecionado.
Este atributo está anotado na classe Document desta forma:
@ManyToMany(cascade = CascadeType.PERSIST)
public List<Presentation> getPresentation() {
return presentation;
}
Antes existia apenas uma Presentation para cada Document
mas agora que é N pra N, não estou conseguindo fazer o filtro.
Este é o filtro para a cardinalidade antiga:
public List<Document> listAllActive(int first, int pageSize,
String idProduct, String idPresentation, String idClassification,
String idCountry) {
Criteria criteria = logicDAO.getSession()
.createCriteria(Document.class).setMaxResults(pageSize)
.setFirstResult(first).addOrder(Order.desc("firstLoteDate"))
.add(Expression.eq("active", new Boolean(true)));
if (idProduct != null && BeanUtilities.isANumber(idProduct)) {
Product prod = new Product();
prod.setIdProduct(new Integer(idProduct));
criteria.add(Expression.like("product", prod));
}
if (idProduct != null && BeanUtilities.isANumber(idPresentation)) {
Presentation pres = new Presentation();
pres.setIdPresentation(new Integer(idPresentation));
criteria.add(Expression.like("presentation", pres));
}
if (idClassification != null
&& BeanUtilities.isANumber(idClassification)) {
ClassificationType classif = new ClassificationType();
classif.setIdClassification(new Integer(idClassification));
criteria.add(Expression.eq("classificationType", classif));
}
if (idCountry != null && BeanUtilities.isANumber(idCountry)) {
Country country = new Country();
country.setIdCountry(new Integer(idCountry));
criteria.add(Expression.eq("country", country));
}
return criteria.list();
}
Muito obrigado!