@Override public Object invoke(MethodInvocation invocation) throws Throwable { if (null == didWeStartWork.get()) { unitOfWork.begin(); didWeStartWork.set(Boolean.TRUE); } else { // If unit of work already started we don't do anything here... // another UnitOfWorkInterceptor point point will take care... // This happens if you are nesting your calls. return invocation.proceed(); } try { return invocation.proceed(); } finally { if (null != didWeStartWork.get()) { didWeStartWork.remove(); unitOfWork.end(); } } }
public static void beginUnitOfWork() { //try { unitOfWork.begin(); //} catch (IllegalStateException ex) { // unitOfWork.end(); //unitOfWork.begin(); // } }
public void start() { if(started.get()) throw new RuntimeException("transaction already started"); started.set(true); unitOfWork.begin(); emp.get().getTransaction().begin(); log.trace("Jpa transaction started"); }
@Override public void doFilter( final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { unitOfWork.begin(); try { filterChain.doFilter(servletRequest, servletResponse); } finally { unitOfWork.end(); } } }
@Override public void doFilter( final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { unitOfWork.begin(); try { filterChain.doFilter(servletRequest, servletResponse); } finally { unitOfWork.end(); } } }
@Override public void createAll(Collection<? extends T> entities) throws TckRepositoryException { uow.begin(); final EntityManager manager = managerProvider.get(); try { manager.getTransaction().begin(); for (T entity : entities) { manager.persist(entity); manager.flush(); } manager.getTransaction().commit(); } catch (RuntimeException x) { if (manager.getTransaction().isActive()) { manager.getTransaction().rollback(); } throw new TckRepositoryException(x.getLocalizedMessage(), x); } finally { uow.end(); } }
@Override public void removeAll() throws TckRepositoryException { uow.begin(); final EntityManager manager = managerProvider.get(); try { manager.getTransaction().begin(); // The query 'DELETE FROM Entity' won't be correct as it will ignore orphanRemoval // and may also ignore some configuration options, while EntityManager#remove won't manager .createQuery(format("SELECT e FROM %s e", getEntityName(entityClass)), entityClass) .getResultList() .forEach(manager::remove); manager.getTransaction().commit(); } catch (RuntimeException x) { if (manager.getTransaction().isActive()) { manager.getTransaction().rollback(); } throw new TckRepositoryException(x.getLocalizedMessage(), x); } finally { uow.end(); } }