#1846 - Test for - Inheritance cascade of fields with bean inheritance

Note this includes the workaround RootBean.preRemove(), so doesn't fail
This commit is contained in:
rob bygrave
2019-10-18 16:20:38 +13:00
parent 1b7dc83a9a
commit 7a974320ed
6 changed files with 155 additions and 0 deletions
@@ -0,0 +1,27 @@
package org.tests.inheritance.cascadedelete;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import java.util.List;
import static javax.persistence.CascadeType.ALL;
@Entity
public class ComplexBean extends RootBean {
@OneToMany(cascade = ALL)
private List<ElementBean> elements;
public ComplexBean(List<ElementBean> elements) {
this.elements = elements;
}
public List<ElementBean> getElements() {
return elements;
}
public void setElements(List<ElementBean> elements) {
this.elements = elements;
}
}
@@ -0,0 +1,26 @@
package org.tests.inheritance.cascadedelete;
import io.ebean.annotation.NotNull;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class ElementBean {
@Id
@GeneratedValue
private Long id;
@NotNull
private String value;
public ElementBean(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
@@ -0,0 +1,33 @@
package org.tests.inheritance.cascadedelete;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.List;
import java.util.UUID;
import static javax.persistence.CascadeType.ALL;
@Entity
public class ReferencingBean {
@Id
@GeneratedValue
public UUID id;
@OneToMany(cascade = ALL)
private List<RootBean> rootBeans;
public ReferencingBean(List<RootBean> rootBeans) {
this.rootBeans = rootBeans;
}
public List<RootBean> getRootBeans() {
return rootBeans;
}
public void setRootBeans(List<RootBean> rootBeans) {
this.rootBeans = rootBeans;
}
}
@@ -0,0 +1,22 @@
package org.tests.inheritance.cascadedelete;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.PreRemove;
import java.util.UUID;
@Entity
@Inheritance
public abstract class RootBean {
@Id
@GeneratedValue
public UUID id;
// added as workaround for the issue
@PreRemove
public void preRemove() {
}
}
@@ -0,0 +1,21 @@
package org.tests.inheritance.cascadedelete;
import javax.persistence.Entity;
@Entity
public class SimpleBean extends RootBean {
private String value;
public SimpleBean(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -0,0 +1,26 @@
package org.tests.inheritance.cascadedelete;
import io.ebean.BaseTestCase;
import io.ebean.DB;
import org.junit.Test;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertNull;
public class TestInheritanceDeleteCascade extends BaseTestCase {
@Test
public void test() {
RootBean bean1 = new ComplexBean(asList(new ElementBean("element-1"), new ElementBean("element-2")));
RootBean bean2 = new SimpleBean("simple-1");
ReferencingBean referencingBean = new ReferencingBean(asList(bean1, bean2));
DB.save(referencingBean);
DB.delete(referencingBean);
assertNull(DB.find(RootBean.class, DB.getBeanId(bean1)));
assertNull(DB.find(RootBean.class, DB.getBeanId(bean2)));
}
}