Index: topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java diff -u topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java:1.7 topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java:1.8 --- topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java:1.7 Fri Mar 17 15:10:36 2006 +++ topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java Wed Jun 7 15:56:01 2006 @@ -23,27 +23,27 @@ * * @author poussin * - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ * - * Last update: $Date: 2006/03/17 15:10:36 $ by : $Author: thimel $ + * Last update: $Date: 2006/06/07 15:56:01 $ by : $Author: thimel $ */ package org.codelutin.topia.persistence.hibernate; import java.io.Serializable; -import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import org.apache.commons.collections.iterators.EntrySetMapIterator; import org.codelutin.topia.TopiaException; import org.codelutin.topia.persistence.TopiaDAOAbstract; import org.codelutin.topia.persistence.TopiaEntity; import org.hibernate.Criteria; import org.hibernate.FlushMode; import org.hibernate.HibernateException; +import org.hibernate.Query; import org.hibernate.Session; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; /** @@ -105,14 +105,7 @@ */ @Override public Entity findByTopiaId(String k) throws TopiaException { - try { - Criteria criteria = createCriteria(FlushMode.AUTO); - criteria.add(Restrictions.idEq(k)); - Entity result = (Entity)criteria.uniqueResult(); - return result; - } catch (HibernateException eee) { - throw new TopiaException(eee); - } + return query(Restrictions.idEq(k)); } /* (non-Javadoc) @@ -147,33 +140,44 @@ @Override public Entity findByProperties(Map properties) throws TopiaException { + return query(Restrictions.allEq(properties)); + } + + /* (non-Javadoc) + * @see org.codelutin.topia.TopiaDAO#findAllByProperties(java.util.Map) + */ + public List findAllByProperties(Map properties) + throws TopiaException { + return queryAll(Restrictions.allEq(properties)); + } + + /* (non-Javadoc) + * @see org.codelutin.topia.persistence.TopiaDAO#queryAll(org.hibernate.criterion.Criterion) + */ + public List queryAll(Criterion criterion) throws TopiaException { try { Criteria criteria = createCriteria(FlushMode.AUTO); - criteria.add(Restrictions.allEq(properties)); - //La manière de faire suivante évite l'exception levée par - // uniqueResult lorsqu'il y a plus d'un résultat - criteria.setMaxResults(1); - List results = (List)criteria.list(); - if (results.size() > 0) { - return (Entity)results.get(0); - } else { - return null; - } + criteria.add(criterion); + List result = (List)criteria.list(); + return result; } catch (HibernateException eee) { throw new TopiaException(eee); } } /* (non-Javadoc) - * @see org.codelutin.topia.TopiaDAO#findAllByProperties(java.util.Map) + * @see org.codelutin.topia.persistence.TopiaDAO#query(org.hibernate.criterion.Criterion) */ - public List findAllByProperties(Map properties) - throws TopiaException { + public Entity query(Criterion criterion) throws TopiaException { try { Criteria criteria = createCriteria(FlushMode.AUTO); - criteria.add(Restrictions.allEq(properties)); + criteria.add(criterion); + criteria.setMaxResults(1); List result = (List)criteria.list(); - return result; + if (result != null && result.size() > 0) { + return result.get(0); + } + return null; } catch (HibernateException eee) { throw new TopiaException(eee); }