diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java index 743f12b1a..d02d95377 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java @@ -2300,7 +2300,6 @@ public class BeanDescriptor implements MetaBeanInfo { if (beanState == null) { return null; } else { - beanState.setLoadedState(); return (T) beanState.getBean(); } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java index 8ceb86d6a..5008a1fda 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java @@ -847,9 +847,7 @@ public class BeanPropertyAssocMany extends BeanPropertyAssoc { childMasterProperty.setValue(detailBean, bean); detailBeanState.setLoaded(childMasterProperty.getName()); } - - detailBeanState.setLoadedState(); - + if (!ctx.readArrayNext()){ break; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadJsonContext.java b/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadJsonContext.java index df0f527da..6b7f2d29c 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadJsonContext.java +++ b/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadJsonContext.java @@ -161,12 +161,6 @@ public class ReadJsonContext extends ReadBasicJsonContext { } } - public void setLoadedState(){ - if (ebi != null){ - ebi.setLoaded(); - } - } - public void propertyChange(PropertyChangeEvent evt) { String propName = evt.getPropertyName(); loadedProps.add(propName); diff --git a/src/test/java/com/avaje/ebeaninternal/server/deploy/TestReferenceWithConstructorProperties.java b/src/test/java/com/avaje/ebeaninternal/server/deploy/TestReferenceWithConstructorProperties.java index 32e024c14..f3fd14694 100644 --- a/src/test/java/com/avaje/ebeaninternal/server/deploy/TestReferenceWithConstructorProperties.java +++ b/src/test/java/com/avaje/ebeaninternal/server/deploy/TestReferenceWithConstructorProperties.java @@ -26,15 +26,13 @@ public class TestReferenceWithConstructorProperties extends BaseTestCase { Set loadedProps = beanState.getLoadedProps(); Assert.assertEquals(1, loadedProps.size()); + Assert.assertTrue(beanState.isReference()); // read the status invokes lazy loading order.getStatus(); - BeanState beanState2 = Ebean.getBeanState(order); - // fully loaded - Assert.assertNull(beanState2.getLoadedProps()); - - + Assert.assertFalse(beanState.isReference()); + } } diff --git a/src/test/java/com/avaje/tests/text/json/TestTextJsonReferenceBean.java b/src/test/java/com/avaje/tests/text/json/TestTextJsonReferenceBean.java index 7c20c4a7c..6b3f3b60d 100644 --- a/src/test/java/com/avaje/tests/text/json/TestTextJsonReferenceBean.java +++ b/src/test/java/com/avaje/tests/text/json/TestTextJsonReferenceBean.java @@ -46,8 +46,17 @@ public class TestTextJsonReferenceBean extends BaseTestCase { EntityBean eb = (EntityBean)refProd; prodDesc.isReference(eb._ebean_getIntercept()); + BeanState beanState = Ebean.getBeanState(refProd); + Assert.assertTrue(beanState.isNew()); + String name = refProd.getName(); - Assert.assertNotNull(name); + Assert.assertNull(name); + + // Set to be 'loaded' to invoke lazy loading + beanState.setLoaded(); + String name2 = refProd.getName(); + Assert.assertNotNull(name2); + } List orders = Ebean.find(Order.class) diff --git a/src/test/java/com/avaje/tests/update/TestJsonStatelessUpdate.java b/src/test/java/com/avaje/tests/update/TestJsonStatelessUpdate.java index 53f37f9f9..89af3f75b 100644 --- a/src/test/java/com/avaje/tests/update/TestJsonStatelessUpdate.java +++ b/src/test/java/com/avaje/tests/update/TestJsonStatelessUpdate.java @@ -47,21 +47,15 @@ public class TestJsonStatelessUpdate extends BaseTestCase { // The update below cascades to also save "master" and that fails // as it thinks it should INSERT master rather than UPDATE master -// Ebean.update(two2); + Ebean.update(two2); - - // The following is a workaround, to explicitly update master first - // so then Ebean doesn't try to save it when two2 is updated - Ebean.beginTransaction(); - try { - UUOne master = two2.getMaster(); - Ebean.update(master); - Ebean.update(two2); - - } finally { - Ebean.endTransaction(); - } - + + // confirm the properties where updated as expected + UUTwo twoConfirm = Ebean.find(UUTwo.class, two.getId()); + + Assert.assertEquals("twoNameModified", twoConfirm.getName()); + Assert.assertEquals("oneNameModified", twoConfirm.getMaster().getName()); + } }