Bonjour,

J'ai créé une fonction de recherche et de tri avec detachedCriteria, dans laquelle je recherche la reference d'un produit dans ma base.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
criteria.createAlias("product", "pr" );
		criteria.add(Restrictions.eq("pr.ref", reference));
		List<Sample> list = criteriaDao.getAllWithoutPagination(criteria, sortAndPagingParams);
voici la fonction getAllWithoutPagination :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
public <T> List<T> getAllWithoutPagination(DetachedCriteria criteria, SortAndPagingParams params) {
        DetachedCriteria idProjection = createIdProjectionPreservingSort(criteria, params);
		List<Long> idList = getHibernateTemplate().findByCriteria(idProjection); 
		DetachedCriteria idListCriteria = createGetByIdListCriteria(criteria, params, idList);
        List<T> rezultWithDuplicates = getHibernateTemplate().findByCriteria(idListCriteria);
        List<T> rezult = distinctList(rezultWithDuplicates);
        return rezult;

Le problème intervient lorsque je recherche un élément qui n'existe pas dans ma base de donné.
Je souhaiterai recevoir une liste vide ou null plutôt qu'une execption.
La fonction findByCriteria me renvoi alors l'exception could not resolve property, ou bien could not execute query.



La solution que j'ai trouvé est de vérifier qu'au moins un objet existe dans la base avant d'effectuer la recherche et le tri, mais cela n'est pas le plus efficace.

Existe-t-il une meilleur instruction à indiquer directement dans cette fonction?

Merci