mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#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:
@@ -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)));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user