package org.tests.transaction; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.Transaction; import io.ebean.TxType; import io.ebean.annotation.Transactional; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static org.assertj.core.api.Assertions.assertThat; public class TestNestedMandatory extends BaseTestCase { private static final Logger log = LoggerFactory.getLogger(TestNestedMandatory.class); static Transaction outerTxn; @Test public void test() { new Outer().doOuter(); } class Outer { @Transactional void doOuter() { outerTxn = Ebean.currentTransaction(); log.info("outer start ...{}", outerTxn); new Inner().doInner(); log.info("outer end ...{}", outerTxn); } } class Inner { @Transactional(type = TxType.MANDATORY) void doInner() { Transaction innerTxn = Ebean.currentTransaction(); log.info("inner ...{}", innerTxn); assertThat(innerTxn).isSameAs(outerTxn); } } }