diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java index 3ad4f9539..8449e1172 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java @@ -691,7 +691,11 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { @Override public void register(TransactionCallback transactionCallback) { - currentTransaction().register(transactionCallback); + Transaction transaction = currentTransaction(); + if (transaction == null) { + throw new PersistenceException("Not currently active transaction when trying to register transactionCallback"); + } + transaction.register(transactionCallback); } /** diff --git a/ebean-test/src/test/java/org/tests/transaction/TestTransactionCallback.java b/ebean-test/src/test/java/org/tests/transaction/TestTransactionCallback.java index cce91acc0..3135fa42f 100644 --- a/ebean-test/src/test/java/org/tests/transaction/TestTransactionCallback.java +++ b/ebean-test/src/test/java/org/tests/transaction/TestTransactionCallback.java @@ -72,12 +72,12 @@ public class TestTransactionCallback extends BaseTestCase { @Test public void test_noActiveTransaction() { - assertThrows(NullPointerException.class, () -> DB.register(new MyCallback())); + assertThrows(PersistenceException.class, () -> DB.register(new MyCallback())); } @Test public void test_noActiveTransaction_withDatabase() { - assertThrows(NullPointerException.class, () -> DB.getDefault().register(new MyCallback())); + assertThrows(PersistenceException.class, () -> DB.getDefault().register(new MyCallback())); } class MyCallback extends TransactionCallbackAdapter {