@Override public Transaction getTransaction() { return delegate.getTransaction(); }
session.getTransaction().begin(); assertEquals( TransactionStatus.ACTIVE, coordinator.getTransactionDriverControl().getStatus() ); session.getTransaction().markRollbackOnly(); assertEquals( TransactionStatus.MARKED_ROLLBACK, coordinator.getTransactionDriverControl().getStatus() ); session.getTransaction().commit();
private void commitTransaction(SessionImplementor session) { if ( session.getTransactionCoordinator().getTransactionCoordinatorBuilder().isJta() ) { TransactionManager transactionManager = lookupTransactionManager( session ); try { transactionManager.commit(); } catch (Exception e) { throw new RuntimeException( e ); } } else { session.getTransaction().commit(); } }
@Test public void testInvalidQueryMarksTxnForRollback() { inSession( session -> { try { assertFalse( session.getTransaction().isActive() ); session.getTransaction().begin(); // Query session.createQuery( "invalid" ).list(); fail( "expecting failure" ); } catch (IllegalArgumentException expected) { assertTrue( session.getTransaction().isActive() ); assertTrue( session.getTransaction().getRollbackOnly() ); } } ); } }
private void beginTransaction(SessionImplementor session) { if ( session.getTransactionCoordinator().getTransactionCoordinatorBuilder().isJta() ) { TransactionManager transactionManager = lookupTransactionManager( session ); try { transactionManager.begin(); } catch (Exception e) { throw new RuntimeException( e ); } } else { session.getTransaction().begin(); } }
@Test public void testUpdateRequiresTxn() { inSession( session -> { try { assertFalse( session.getTransaction().isActive() ); // Query session.createQuery( "update Person set name = 'steve'" ).executeUpdate(); fail( "expecting failure" ); } catch (TransactionRequiredException expected) { // expected condition } } ); }
@Test public void testMarkRollbackOnlyNoTransaction() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.JPA_TRANSACTION_COMPLIANCE, "true" ) .build(); try { final SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) new MetadataSources( ssr ) .buildMetadata() .buildSessionFactory(); try { inSession( sessionFactory, session -> { final Transaction transaction = session.getTransaction(); assertFalse( transaction.isActive() ); // should just happen silently because there is no transaction transaction.markRollbackOnly(); transaction.begin(); transaction.commit(); } ); } finally { sessionFactory.close(); } } finally { StandardServiceRegistryBuilder.destroy( ssr ); } }
@Test public void testInsertWithRollback() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); s.getTransaction().markRollbackOnly(); } ); assertFalse( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); }
sessionFactory, session -> { final Transaction transaction = session.getTransaction(); transaction.begin(); sessionFactory, session -> { final Transaction transaction = session.getTransaction(); transaction.begin();
@Test public void testInsertThenUpdateThenRollback() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); item.setName( "new data" ); s.getTransaction().markRollbackOnly(); } ); assertFalse( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); }
sessionFactory, session -> { final Transaction transaction = session.getTransaction(); assertFalse( transaction.isActive() ); try {
sessionFactory, session -> { final Transaction transaction = session.getTransaction(); assertFalse( transaction.isActive() ); try {
sessionFactory, session -> { final Transaction transaction = session.getTransaction(); assertFalse( transaction.isActive() ); try {
@Test public void testInsertWithClearThenRollback() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); s.clear(); item = s.get( CacheableItem.class, item.getId() ); s.getTransaction().markRollbackOnly(); } ); assertFalse( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); inTransaction( sessionFactory, s -> { final CacheableItem item = s.get( CacheableItem.class, 1L ); assertNull( "it should be null", item ); } ); }
s.flush(); s.refresh( item ); s.getTransaction().markRollbackOnly();
@Override public Transaction getTransaction() { return delegate.getTransaction(); }