From 45a571bd97fc6270917ee0553b8a784546c51836 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 9 Oct 2017 21:13:12 +1300 Subject: [PATCH] #1165 - ENH: Add to Finder - currentTransaction() and flush() methods ... (as useful shortcuts) --- src/main/java/io/ebean/Finder.java | 15 +++++++ .../query/finder/TestCustomerFinder.java | 43 ++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) 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() {