diff --git a/src/main/java/io/ebean/Finder.java b/src/main/java/io/ebean/Finder.java
index 28ead360e..e4c3d6416 100644
--- a/src/main/java/io/ebean/Finder.java
+++ b/src/main/java/io/ebean/Finder.java
@@ -92,6 +92,20 @@ public class Finder {
this.serverName = serverName;
}
+ /**
+ * Return the current transaction.
+ */
+ public Transaction currentTransaction() {
+ return db().currentTransaction();
+ }
+
+ /**
+ * Flush the JDBC batch on the current transaction.
+ */
+ public void flush() {
+ db().flush();
+ }
+
/**
* Return the underlying 'default' EbeanServer.
*
@@ -170,4 +184,5 @@ public class Finder {
public Query query(String ormQuery) {
return db().createQuery(type, ormQuery);
}
+
}
diff --git a/src/test/java/org/tests/query/finder/TestCustomerFinder.java b/src/test/java/org/tests/query/finder/TestCustomerFinder.java
index 6cfecf289..0440a1e38 100644
--- a/src/test/java/org/tests/query/finder/TestCustomerFinder.java
+++ b/src/test/java/org/tests/query/finder/TestCustomerFinder.java
@@ -2,13 +2,17 @@ package org.tests.query.finder;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
-import org.tests.model.basic.Customer;
-import org.tests.model.basic.ResetBasicData;
+import io.ebean.Transaction;
+import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
+import org.tests.model.basic.Customer;
+import org.tests.model.basic.EBasic;
+import org.tests.model.basic.ResetBasicData;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertTrue;
public class TestCustomerFinder extends BaseTestCase {
@@ -42,6 +46,41 @@ public class TestCustomerFinder extends BaseTestCase {
}
+ @Test
+ public void currentTransaction() {
+
+ Ebean.beginTransaction();
+ try {
+ Transaction t1 = Ebean.currentTransaction();
+ Transaction t2 = Customer.find.currentTransaction();
+ assertThat(t2).isSameAs(t1);
+
+ } finally {
+ Ebean.endTransaction();
+ }
+ }
+
+ @Test
+ public void flush() {
+
+ Transaction transaction = Ebean.beginTransaction();
+ try {
+ Customer.find.currentTransaction().setBatchMode(true);
+
+ LoggedSqlCollector.start();
+ EBasic b = new EBasic("junk");
+ Ebean.save(b);
+
+ assertTrue(LoggedSqlCollector.current().isEmpty());
+ Customer.find.flush();
+
+ List sql = LoggedSqlCollector.stop();
+ assertThat(sql.get(0)).contains("insert into e_basic");
+ } finally {
+ transaction.end();
+ }
+ }
+
@Test
public void test_byName_deleteById() {