Index: lams_common/src/java/org/lamsfoundation/lams/dao/IBaseDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r8a37658d37fa3da8260fe7806df498ae20a99f49 --- lams_common/src/java/org/lamsfoundation/lams/dao/IBaseDAO.java (.../IBaseDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/dao/IBaseDAO.java (.../IBaseDAO.java) (revision 8a37658d37fa3da8260fe7806df498ae20a99f49) @@ -46,15 +46,15 @@ /** * Insert an object into the database. Should only be used if the object has not * been persisted previously. - * + * * @param object * The object to be inserted */ public void insert(Object object); /** * Update a previously inserted object into the database. - * + * * @param object * The object to be updated */ @@ -63,7 +63,7 @@ /** * Insert or update an object into the database. It is up to the persistence * engine to decide whether to insert or update. - * + * * @param object * The object to be inserted/updated */ @@ -124,7 +124,7 @@ /** * These 2 objects have to be instances of the Class - * + * * @param clazz * @param newValues * in a object @@ -137,23 +137,23 @@ /** * Force this session to flush. Must be called at the end of a unit of work, before commiting the transaction and * closing the session (depending on flush-mode, Transaction.commit() calls this method). - * + * * @throws HibernateException * - Indicates problems flushing the session or talking to the database. */ void flush(); /** * Remove an object from the database. - * + * * @param object * The object to be deleted */ public void delete(Object object); /** * Be careful to use this method. It will clean up the whole table for the Class - * + * * @param clazz * @return void */ @@ -192,7 +192,7 @@ /** * Delete any object which has the same non-null property values as the object - * + * * @param object * @return void */ @@ -201,7 +201,7 @@ /** * Find an object. If the object is not found * then it will return null - * + * * @param clazz * @param id */ @@ -228,14 +228,6 @@ */ public List findByProperties(Class clazz, Map properties); - /** - * Find any object which has the same non-null property values as the object - * - * @param object - * @return a list of objects which has the same non-null property values as the object - */ - public List findAnythingLike(Object object); - public List find(String queryString); public List find(String queryString, Object value); @@ -283,23 +275,23 @@ /** * Force initialization of a Hibernate proxy or persistent collection - * + * * @param proxy * of persistent object or a collection */ public void initialize(Object proxy); /** * Count all rows in a table for a hibernate-mapped class - * + * * @param clazz * @return */ public long countAll(Class clazz); /** * Create a query based on the properties, and count the result - * + * * @param properties * a map of property names and values * @return a list of objects which have the same property values Index: lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/LAMSBaseDAO.java =================================================================== diff -u -rb3b03858efeef1c37e36993757f56374a9f2b9f3 -r8a37658d37fa3da8260fe7806df498ae20a99f49 --- lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/LAMSBaseDAO.java (.../LAMSBaseDAO.java) (revision b3b03858efeef1c37e36993757f56374a9f2b9f3) +++ lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/LAMSBaseDAO.java (.../LAMSBaseDAO.java) (revision 8a37658d37fa3da8260fe7806df498ae20a99f49) @@ -10,15 +10,16 @@ import java.util.Map; import java.util.regex.Pattern; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; + import org.apache.log4j.Logger; -import org.hibernate.Criteria; import org.hibernate.Hibernate; import org.hibernate.HibernateException; -import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; -import org.hibernate.criterion.CriteriaSpecification; -import org.hibernate.criterion.Example; +import org.hibernate.query.Query; import org.lamsfoundation.lams.dao.IBaseDAO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -57,7 +58,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#insert(java.lang.Object) */ @Override @@ -67,7 +68,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#update(java.lang.Object) */ @Override @@ -77,7 +78,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.dao.IBaseDAO#insertOrUpdate(java.lang.Object) */ @@ -88,7 +89,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.dao.IBaseDAO#insertOrUpdateAll(java.util.Collection * ) @@ -150,7 +151,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#delete(java.lang.Object) */ @Override @@ -160,7 +161,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#deleteAll(java.lang.Class) */ @Override @@ -171,7 +172,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#deleteAll(java.util.Collection) */ @Override @@ -181,7 +182,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#deleteById(java.lang.Class, * java.io.Serializable) */ @@ -192,7 +193,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.dao.IBaseDAO#deleteByProperty(java.lang.Class, * java.lang.String, java.lang.Object) @@ -205,7 +206,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.dao.IBaseDAO#deleteByProperties(java.lang.Class, * java.util.Map) @@ -218,7 +219,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.dao.IBaseDAO#deleteAnythingLike(java.lang.Object) */ @@ -234,7 +235,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#find(java.lang.Class, * java.io.Serializable) */ @@ -245,7 +246,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#findAll(java.lang.Class) */ @Override @@ -255,7 +256,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#findByProperty(java.lang.Class, * java.lang.String, java.lang.Object) */ @@ -267,7 +268,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.dao.IBaseDAO#findByProperties(java.lang.Class, * java.util.Map) @@ -278,17 +279,6 @@ return doFind(qv.queryString, qv.values); } - /* - * (non-Javadoc) - * - * @see - * org.lamsfoundation.lams.dao.IBaseDAO#findAnythingLike(java.lang.Object) - */ - @Override - public List findAnythingLike(Object object) { - return doFindByExample(null, object, -1, -1); - } - private String buildQueryString(Class clazz, String operation) { StringBuilder queryString = new StringBuilder(operation).append(clazz.getSimpleName()); // log.debug(queryString); @@ -420,7 +410,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.dao.IBaseDAO#countAll(java.lang.Class) */ @Override @@ -438,7 +428,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.dao.IBaseDAO#countByProperties(java.lang.Class, * java.util.Map) @@ -482,17 +472,18 @@ // replace all the current ? with :P1, :P2, etc String[] parts = Pattern.compile("\\?").split(queryString, 0); StringBuilder bldr = new StringBuilder(parts[0]); - int i=1; + int i = 1; if (parts.length > 1) { for (; i < parts.length; i++) { - bldr.append( ":P").append(i).append(" ").append(parts[i]); + bldr.append(":P").append(i).append(" ").append(parts[i]); } - } - if ( queryString.endsWith("?")) + } + if (queryString.endsWith("?")) { bldr.append(" :P").append(i).append(" "); + } queryObject = getSession().createQuery(bldr.toString()); for (i = 0; i < values.length; i++) { - queryObject.setParameter("P"+Integer.toString(i+1), values[i]); + queryObject.setParameter("P" + Integer.toString(i + 1), values[i]); } } return queryObject; @@ -513,49 +504,15 @@ return queryObject.list(); } - public List doFindByExample(final String entityName, final T exampleEntity, final int firstResult, - final int maxResults) { - if (exampleEntity == null) { - throw new IllegalArgumentException("Example entity must not be null"); - } + public List loadAll(final Class entityClass) { + CriteriaBuilder builder = getSession().getCriteriaBuilder(); + CriteriaQuery query = builder.createQuery(entityClass); + Root variableRoot = query.from(entityClass); + query.select(variableRoot); + return getSession().createQuery(query).getResultList(); - Criteria executableCriteria = (entityName != null ? getSession().createCriteria(entityName) - : getSession().createCriteria(exampleEntity.getClass())); - executableCriteria.add(Example.create(exampleEntity)); - if (firstResult >= 0) { - executableCriteria.setFirstResult(firstResult); - } - if (maxResults > 0) { - executableCriteria.setMaxResults(maxResults); - } - return executableCriteria.list(); } - public List findByExample(final String entityName, final T exampleEntity, final int firstResult, - final int maxResults) { - - if (exampleEntity == null) { - throw new IllegalArgumentException("Example entity must not be null"); - } - - Criteria executableCriteria = (entityName != null ? getSession().createCriteria(entityName) - : getSession().createCriteria(exampleEntity.getClass())); - executableCriteria.add(Example.create(exampleEntity)); - if (firstResult >= 0) { - executableCriteria.setFirstResult(firstResult); - } - if (maxResults > 0) { - executableCriteria.setMaxResults(maxResults); - } - return executableCriteria.list(); - } - - public List loadAll(final Class entityClass) { - Criteria criteria = getSession().createCriteria(entityClass); - criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); - return criteria.list(); - } - public void doDeleteAll(final Collection entities) { for (Object entity : entities) { getSession().delete(entity); @@ -638,6 +595,7 @@ getSession().delete(getObject(clazz, id)); } + @Override public void releaseFromCache(Object o) { getSessionFactory().getCurrentSession().evict(o); }