package org.tests.cache; import io.ebean.BaseTestCase; import io.ebean.Ebean; import org.tests.model.basic.Customer; import org.tests.model.basic.Order; import org.junit.Test; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; public class TestCacheInterceptSaveWhenLazyLoaded extends BaseTestCase { @Test public void test() { Customer customer = new Customer(); customer.setName("daCustomer"); Ebean.save(customer); Order order = new Order(); order.setStatus(Order.Status.NEW); order.setCustomer(customer); Ebean.save(order); Ebean.beginTransaction(); try { Order foundOrder = Ebean.find(Order.class) .where().eq("id", order.getId()) .findUnique(); foundOrder.setStatus(Order.Status.APPROVED); assertTrue(Ebean.getBeanState(foundOrder).isDirty()); Customer foundCustomer = Ebean.find(Customer.class) .where().eq("id", customer.getId()) .findUnique(); // the foundOrder is in this list foundCustomer.getOrders().size(); Order order1 = foundCustomer.getOrders().get(0); assertSame(foundOrder, order1); assertTrue(Ebean.getBeanState(foundOrder).isDirty()); Ebean.delete(order1); Ebean.delete(customer); } finally { Ebean.endTransaction(); } } }