diff --git a/src/main/java/com/avaje/ebean/Transaction.java b/src/main/java/com/avaje/ebean/Transaction.java index 560a7278b..c05434b5c 100644 --- a/src/main/java/com/avaje/ebean/Transaction.java +++ b/src/main/java/com/avaje/ebean/Transaction.java @@ -118,6 +118,11 @@ public interface Transaction extends Closeable { */ void setRollbackOnly(); + /** + * Return true if the transaction is marked as rollback only. + */ + boolean isRollbackOnly(); + /** * If the transaction is active then perform rollback. Otherwise do nothing. */ diff --git a/src/main/java/com/avaje/ebeaninternal/api/ScopedTransaction.java b/src/main/java/com/avaje/ebeaninternal/api/ScopedTransaction.java index 0d29f3aaf..2aa97a8ad 100644 --- a/src/main/java/com/avaje/ebeaninternal/api/ScopedTransaction.java +++ b/src/main/java/com/avaje/ebeaninternal/api/ScopedTransaction.java @@ -63,6 +63,11 @@ public class ScopedTransaction implements SpiTransaction { scopeTrans.setRollbackOnly(); } + @Override + public boolean isRollbackOnly() { + return transaction.isRollbackOnly(); + } + @Override public void end() throws PersistenceException { try { diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java index 80f2ef1d9..3185b4bfc 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java @@ -965,6 +965,14 @@ public class JdbcTransaction implements SpiTransaction { } } + /** + * Return true if the transaction is marked as rollback only. + */ + @Override + public boolean isRollbackOnly() { + return rollbackOnly; + } + /** * Mark the transaction as rollback only. */ diff --git a/src/test/java/com/avaje/tests/transaction/TestTransactionRollbackOnly.java b/src/test/java/com/avaje/tests/transaction/TestTransactionRollbackOnly.java index 5b536718c..5cfd3806d 100644 --- a/src/test/java/com/avaje/tests/transaction/TestTransactionRollbackOnly.java +++ b/src/test/java/com/avaje/tests/transaction/TestTransactionRollbackOnly.java @@ -7,6 +7,8 @@ import com.avaje.tests.model.basic.EBasic; import org.junit.Test; import static org.assertj.core.api.StrictAssertions.assertThat; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; public class TestTransactionRollbackOnly { @@ -30,7 +32,10 @@ public class TestTransactionRollbackOnly { Ebean.save(one); Transaction transaction = Ebean.currentTransaction(); + assertFalse(transaction.isRollbackOnly()); + transaction.setRollbackOnly(); + assertTrue(transaction.isRollbackOnly()); } @Test