src/main/java/ru/indvdum/jpa/dao/JPADataAccessObject.groovy
changeset 19 39381427da3f
parent 16 409046072775
child 20 a05948e9458c
equal deleted inserted replaced
18:d4f6ff7931e0 19:39381427da3f
    20 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI
    20 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI
    21 import org.apache.openjpa.persistence.OpenJPAPersistence
    21 import org.apache.openjpa.persistence.OpenJPAPersistence
    22 import org.slf4j.Logger
    22 import org.slf4j.Logger
    23 import org.slf4j.LoggerFactory
    23 import org.slf4j.LoggerFactory
    24 
    24 
       
    25 import ru.indvdum.jpa.entities.AbstractEntity
    25 import ru.indvdum.jpa.props.Props
    26 import ru.indvdum.jpa.props.Props
    26 
    27 
    27 /**
    28 /**
    28  * @author indvdum (gotoindvdum[at]gmail[dot]com)
    29  * @author indvdum (gotoindvdum[at]gmail[dot]com)
    29  * @since 08.11.2012 23:35:04
    30  * @since 08.11.2012 23:35:04
    96 	public <T> T mergeAndRefresh(T object) {
    97 	public <T> T mergeAndRefresh(T object) {
    97 		def merged = em.merge(object)
    98 		def merged = em.merge(object)
    98 		em.refresh(merged)
    99 		em.refresh(merged)
    99 
   100 
   100 		merged
   101 		merged
       
   102 	}
       
   103 
       
   104 	public <T extends AbstractEntity> T read(T object) {
       
   105 		return find(object.class, object.getIdentifierValue())
   101 	}
   106 	}
   102 
   107 
   103 	public <T> T merge(T object) {
   108 	public <T> T merge(T object) {
   104 		em.merge(object)
   109 		em.merge(object)
   105 	}
   110 	}
   244 			Object value = equalFieldNamesAndValues[i++];
   249 			Object value = equalFieldNamesAndValues[i++];
   245 			fieldValues["${field}"] = value;
   250 			fieldValues["${field}"] = value;
   246 		}
   251 		}
   247 		return find(entityClass, fieldValues, null);
   252 		return find(entityClass, fieldValues, null);
   248 	}
   253 	}
   249 	
   254 
   250 	
   255 
   251 	public Object find(String jpql, Object ... paramValues) {
   256 	public Object find(String jpql, Object ... paramValues) {
   252 		Query query = em.createQuery(jpql);
   257 		Query query = em.createQuery(jpql);
   253 		for (int i = 0; i < paramValues.length; i++)
   258 		for (int i = 0; i < paramValues.length; i++)
   254 			query.setParameter(i + 1, paramValues[i]);
   259 			query.setParameter(i + 1, paramValues[i]);
   255 		return query.getSingleResult();
   260 		return query.getSingleResult();