Bugfix/create entity bean unload (#1729)

* #1726 Add a testcase to reveal wrong behaviour of createEntityBean

* #1726 FIX: createEntityBean must not unload properties for "new" beans

(cherry picked from commit 270721bdb54373a83ef00b19a3c35da50f2a2bf5)
This commit is contained in:
jonasPoehler
2019-06-10 16:09:12 +12:00
committed by Rob Bygrave
parent 385cc76e34
commit 2923dd1d96
3 changed files with 91 additions and 6 deletions
@@ -0,0 +1,36 @@
package org.tests.basic;
import io.ebean.BaseTestCase;
import io.ebean.DB;
import io.ebean.Ebean;
import org.junit.Assert;
import org.junit.Test;
import org.tests.model.basic.EDefaultProp;
public class TestCreateEntityBean extends BaseTestCase {
@Test
public void testDefaultRelation() {
// Use `new` to construct EntityBean
final EDefaultProp beanNew = new EDefaultProp();
Ebean.save(beanNew);
final EDefaultProp beanNewDb = Ebean.find(EDefaultProp.class, beanNew.getId());
Assert.assertNotNull(beanNewDb);
Assert.assertEquals("defaultName", beanNew.getName());
Assert.assertNotNull(beanNewDb.geteSimple());
Assert.assertEquals("Default prop eSimple", beanNewDb.geteSimple().getName());
// Use `createEntityBean` to construct EntityBean and check if it behaves the same as `new`
final EDefaultProp beanCreateEntityBean = DB.getDefault().createEntityBean(EDefaultProp.class);
Ebean.save(beanCreateEntityBean);
final EDefaultProp beanCreateEntityBeanDb = Ebean.find(EDefaultProp.class, beanCreateEntityBean.getId());
Assert.assertNotNull(beanCreateEntityBeanDb);
Assert.assertEquals("defaultName", beanCreateEntityBeanDb.getName());
Assert.assertNotNull(beanCreateEntityBeanDb.geteSimple());
Assert.assertEquals("Default prop eSimple", beanCreateEntityBeanDb.geteSimple().getName());
}
}
@@ -0,0 +1,48 @@
package org.tests.model.basic;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class EDefaultProp {
@Id
Integer id;
@OneToOne(cascade = CascadeType.ALL)
ESimple eSimple;
String name;
public EDefaultProp() {
eSimple = new ESimple();
eSimple.setName("Default prop eSimple");
name = "defaultName";
}
public Integer getId() {
return id;
}
public void setId(final Integer id) {
this.id = id;
}
public ESimple geteSimple() {
return eSimple;
}
public void seteSimple(final ESimple eSimple) {
this.eSimple = eSimple;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
}