@Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void run() { getEntityManager().merge(deo); } }.run();
@Override @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) public <T> T findByUuid(String uuid, Class<T> entityClass) { return this.getEntityManager().find(entityClass, uuid); }
@Transactional(propagation = Propagation.REQUIRES_NEW) private void doUpdateCollection(Collection entities) { for (Object e : entities) { getEntityManager().merge(e); } }
@Override @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) public <T> T findById(long id, Class<T> entityClass) { return getEntityManager().find(entityClass, id); }
@Override @Transactional(readOnly = true) public Timestamp getCurrentSqlTime() { Query query = getEntityManager().createNativeQuery("select current_timestamp()"); return (Timestamp) query.getSingleResult(); }
@Transactional(readOnly = true) private void getDbVersionOnInit() { String sql = "select version from schema_version order by version desc limit 1"; Query q = getEntityManager().createNativeQuery(sql); dbVersion = (String) q.getSingleResult(); }
@Transactional(propagation = Propagation.REQUIRES_NEW) private <T> T doPersist(T entity, boolean isRefresh) { this.entityForTranscationCallback(Operation.PERSIST, entity.getClass()); getEntityManager().persist(entity); if (isRefresh) { getEntityManager().flush(); getEntityManager().refresh(entity); } return entity; }
@Transactional private void nativeSqlDelete(Collection ids) { // native sql can avoid JPA cascades a deletion to parent entity when deleting a child entity String sql = String.format("delete from %s where %s in (:ids)", voClass.getSimpleName(), voPrimaryKeyField.getName()); Query q = getEntityManager().createNativeQuery(sql); q.setParameter("ids", ids); q.executeUpdate(); }
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) boolean isExist(Object id) { String sql = String.format("select count(*) from %s ref where ref.%s = :id", voClass.getSimpleName(), voPrimaryKeyField.getName()); TypedQuery<Long> q = getEntityManager().createQuery(sql, Long.class); q.setParameter("id", id); q.setMaxResults(1); Long count = q.getSingleResult(); return count > 0; }
@Transactional(propagation = Propagation.REQUIRES_NEW) private Object update(Object e, boolean refresh) { try { e = getEntityManager().merge(e); if (refresh) { getEntityManager().flush(); getEntityManager().refresh(e); } return e; } catch (DataIntegrityViolationException de) { updateEO(e, de); } return e; }
@Override @Transactional public void postSoftDelete(Collection entityIds, Class entityClass) { String sql = String.format("delete from %s me where me.%s in (:ids)", voClass.getSimpleName(), at.joinColumn()); Query q = getEntityManager().createQuery(sql); q.setParameter("ids", entityIds); q.executeUpdate(); } });
@Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void persistCollection(Collection entities) { for (Object e : entities) { this.entityForTranscationCallback(Operation.PERSIST, e.getClass()); this.getEntityManager().persist(e); } }
@Transactional(propagation = Propagation.REQUIRES_NEW) Object reload(Object entity) { return getEntityManager().find(entity.getClass(), getVOPrimaryKeyValue(entity)); }
private void softDelete(Collection ids) { String sql = String.format("update %s eo set eo.%s = (:date) where eo.%s in (:ids)", eoClass.getSimpleName(), eoSoftDeleteColumn.getName(), eoPrimaryKeyField.getName()); Query q = getEntityManager().createQuery(sql); q.setParameter("ids", ids); q.setParameter("date", new Timestamp(new Date().getTime()).toString()); q.executeUpdate(); fireSoftDeleteExtension(ids, voClass); fireSoftDeleteExtensionByEOClass(ids, eoClass); }
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) List listByPrimaryKeys(Collection ids, int offset, int length) { String sql = null; Query query = null; if (ids == null || ids.isEmpty()) { sql = String.format("select e from %s e", voClass.getSimpleName()); query = getEntityManager().createQuery(sql, voClass); } else { sql = String.format("select e from %s e where e.%s in (:ids)", voClass.getSimpleName(), voPrimaryKeyField.getName()); query = getEntityManager().createQuery(sql, voClass); query.setParameter("ids", ids); } query.setFirstResult(offset); query.setMaxResults(length); return query.getResultList(); }
private void hardDelete(Object entity) { entity = getEntityManager().merge(entity); getEntityManager().remove(entity); Object idval = getVOPrimaryKeyValue(entity); fireHardDeleteExtension(list(idval)); }
@Override @Transactional @ExceptionSafe public void hardDeleteCollectionSelectedBySQL(String sql, Class entityClass) { EntityInfo info = getEntityInfo(entityClass); Query q = getEntityManager().createQuery(sql); List ids = q.getResultList(); if (ids.isEmpty()) { return; } info.hardDelete(ids); }
private void hardDelete(Collection ids) { String tblName = hasEO() ? eoClass.getSimpleName() : voClass.getSimpleName(); String sql = String.format("delete from %s eo where eo.%s in (:ids)", tblName, voPrimaryKeyField.getName()); Query q = getEntityManager().createQuery(sql); q.setParameter("ids", ids); q.executeUpdate(); logger.debug(String.format("hard delete %s records from %s", ids.size(), tblName)); fireHardDeleteExtension(ids); }
@Transactional(propagation = Propagation.REQUIRES_NEW) private void _eoCleanup(Class VOClazz) { EntityInfo info = getEntityInfo(VOClazz); if (!info.hasEO()) { logger.warn(String.format("Class[%s] doesn't has EO.", VOClazz)); return; } String deleted = info.eoSoftDeleteColumn.getName(); String sql = String.format("select eo.%s from %s eo where eo.%s is not null", info.voPrimaryKeyField.getName(), info.eoClass.getSimpleName(), deleted); Query q = getEntityManager().createQuery(sql); List ids = q.getResultList(); if (ids.isEmpty()) { return; } info.hardDelete(ids); }
@Transactional(propagation = Propagation.REQUIRES_NEW) private void _eoCleanup(Class VOClazz, List ids) { EntityInfo info = getEntityInfo(VOClazz); if (!info.hasEO()) { logger.warn(String.format("Class[%s] doesn't has EO.", VOClazz)); return; } String deleted = info.eoSoftDeleteColumn.getName(); String sql = String.format("select eo.%s from %s eo where eo.%s is not null and eo.%s in (:ids)", info.voPrimaryKeyField.getName(), info.eoClass.getSimpleName(), deleted, info.voPrimaryKeyField.getName()); Query q = getEntityManager().createQuery(sql); q.setParameter("ids", ids); ids = q.getResultList(); if (ids.isEmpty()) { return; } info.hardDelete(ids); }