From b83412281ecfa0f2ebeb83fbfed1ff8ef20f9327 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Wed, 7 Feb 2018 16:39:58 +1300 Subject: [PATCH] #1251 - Delete cascade with 11+ and Postgres throws exception Failing test --- .../org/tests/model/onetoone/OtoThMany.java | 32 ++++++++++++++++++ .../org/tests/model/onetoone/OtoThOne.java | 31 +++++++++++++++++ .../org/tests/model/onetoone/OtoThTop.java | 33 +++++++++++++++++++ .../onetoone/TestOneToOneManyDelete.java | 32 ++++++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 src/test/java/org/tests/model/onetoone/OtoThMany.java create mode 100644 src/test/java/org/tests/model/onetoone/OtoThOne.java create mode 100644 src/test/java/org/tests/model/onetoone/OtoThTop.java create mode 100644 src/test/java/org/tests/model/onetoone/TestOneToOneManyDelete.java diff --git a/src/test/java/org/tests/model/onetoone/OtoThMany.java b/src/test/java/org/tests/model/onetoone/OtoThMany.java new file mode 100644 index 000000000..4f8b8d7d6 --- /dev/null +++ b/src/test/java/org/tests/model/onetoone/OtoThMany.java @@ -0,0 +1,32 @@ +package org.tests.model.onetoone; + +import org.tests.model.BaseModel; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.OneToOne; + +@Entity +public class OtoThMany extends BaseModel { + + String many; + + @OneToOne(mappedBy = "many", cascade = CascadeType.ALL) + OtoThOne one; + + public String getMany() { + return many; + } + + public void setMany(String many) { + this.many = many; + } + + public OtoThOne getOne() { + return one; + } + + public void setOne(OtoThOne one) { + this.one = one; + } +} diff --git a/src/test/java/org/tests/model/onetoone/OtoThOne.java b/src/test/java/org/tests/model/onetoone/OtoThOne.java new file mode 100644 index 000000000..933a8d789 --- /dev/null +++ b/src/test/java/org/tests/model/onetoone/OtoThOne.java @@ -0,0 +1,31 @@ +package org.tests.model.onetoone; + +import org.tests.model.BaseModel; + +import javax.persistence.Entity; +import javax.persistence.OneToOne; + +@Entity +public class OtoThOne extends BaseModel { + + boolean one; + + @OneToOne + OtoThMany many; + + public boolean isOne() { + return one; + } + + public void setOne(boolean one) { + this.one = one; + } + + public OtoThMany getMany() { + return many; + } + + public void setMany(OtoThMany many) { + this.many = many; + } +} diff --git a/src/test/java/org/tests/model/onetoone/OtoThTop.java b/src/test/java/org/tests/model/onetoone/OtoThTop.java new file mode 100644 index 000000000..970e3da71 --- /dev/null +++ b/src/test/java/org/tests/model/onetoone/OtoThTop.java @@ -0,0 +1,33 @@ +package org.tests.model.onetoone; + +import org.tests.model.BaseModel; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.OneToMany; +import java.util.List; + +@Entity +public class OtoThTop extends BaseModel { + + String top; + + @OneToMany(cascade = CascadeType.ALL) + List manies; + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public List getManies() { + return manies; + } + + public void setManies(List manies) { + this.manies = manies; + } +} diff --git a/src/test/java/org/tests/model/onetoone/TestOneToOneManyDelete.java b/src/test/java/org/tests/model/onetoone/TestOneToOneManyDelete.java new file mode 100644 index 000000000..8803fa542 --- /dev/null +++ b/src/test/java/org/tests/model/onetoone/TestOneToOneManyDelete.java @@ -0,0 +1,32 @@ +package org.tests.model.onetoone; + +import io.ebean.Ebean; +import org.junit.Test; + +public class TestOneToOneManyDelete { + + @Test + public void test() { + + OtoThTop top = new OtoThTop(); + top.setTop("top"); + for (int i = 0; i < 4; i++) { + + OtoThMany many = new OtoThMany(); + many.setMany("many "+i); + + OtoThOne one = new OtoThOne(); + one.setOne(true); + one.setMany(many); + + many.setOne(one); + + top.getManies().add(many); + } + + Ebean.save(top); + + Ebean.delete(top); + + } +}