diff --git a/src/test/java/com/avaje/tests/iud/TestInfoOneToOne.java b/src/test/java/com/avaje/tests/iud/TestInfoOneToOne.java new file mode 100644 index 000000000..bce670558 --- /dev/null +++ b/src/test/java/com/avaje/tests/iud/TestInfoOneToOne.java @@ -0,0 +1,55 @@ +package com.avaje.tests.iud; + +import com.avaje.ebean.BaseTestCase; +import com.avaje.tests.model.info.InfoCompany; +import com.avaje.tests.model.info.InfoCustomer; +import org.junit.Assert; +import org.junit.Test; + +public class TestInfoOneToOne extends BaseTestCase { + + @Test + public void test_cascade_oneToOne() { + + InfoCompany company = new InfoCompany(); + company.setName("info company"); + + InfoCustomer customer = new InfoCustomer(); + customer.setName("first info cust"); + customer.setInfos(company); + + customer.save(); + + // assert both are inserted + Assert.assertNotNull(customer.getId()); + Assert.assertNotNull(company.getId()); + + // both can be fetched + Assert.assertNotNull(InfoCustomer.find.byId(customer.getId())); + Assert.assertNotNull(InfoCompany.find.byId(company.getId())); + + + // just update the customer + customer.setName("first mod"); + customer.update(); + + // update the customer and company + customer.getInfos().setName("2nd mod company"); + customer.setName("2nd mod customer"); + customer.update(); + + // fetch and then update both + InfoCustomer fetchedCustomer = InfoCustomer.find.byId(customer.getId()); + fetchedCustomer.getInfos().setName("3rd mod company"); + fetchedCustomer.setName("3rd mod customer"); + fetchedCustomer.update(); + + + // delete both customer and company + fetchedCustomer.delete(); + Assert.assertNull(InfoCustomer.find.byId(customer.getId())); + Assert.assertNull(InfoCompany.find.byId(company.getId())); + + } + +} diff --git a/src/test/java/com/avaje/tests/model/info/InfoCompany.java b/src/test/java/com/avaje/tests/model/info/InfoCompany.java new file mode 100644 index 000000000..202bd5cba --- /dev/null +++ b/src/test/java/com/avaje/tests/model/info/InfoCompany.java @@ -0,0 +1,56 @@ +package com.avaje.tests.model.info; + +import com.avaje.ebean.Model; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class InfoCompany extends Model { + + public static Finder find = new Finder(Long.class, InfoCompany.class); + + @Id + Long id; + + @Version + Long version; + + String name; + + @OneToMany(mappedBy = "company", cascade = CascadeType.ALL) + List contacts = new ArrayList(); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getContacts() { + return contacts; + } + + public void setContacts(List contacts) { + this.contacts = contacts; + } +} diff --git a/src/test/java/com/avaje/tests/model/info/InfoContact.java b/src/test/java/com/avaje/tests/model/info/InfoContact.java new file mode 100644 index 000000000..a11ea7f4c --- /dev/null +++ b/src/test/java/com/avaje/tests/model/info/InfoContact.java @@ -0,0 +1,55 @@ +package com.avaje.tests.model.info; + +import com.avaje.ebean.Model; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Version; + +@Entity +public class InfoContact extends Model { + + @Id + Long id; + + @Version + Long version; + + String name; + + @ManyToOne(optional = false) + InfoCompany company; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + public InfoCompany getCompany() { + return company; + } + + public void setCompany(InfoCompany company) { + this.company = company; + } +} diff --git a/src/test/java/com/avaje/tests/model/info/InfoCustomer.java b/src/test/java/com/avaje/tests/model/info/InfoCustomer.java new file mode 100644 index 000000000..5013cdf65 --- /dev/null +++ b/src/test/java/com/avaje/tests/model/info/InfoCustomer.java @@ -0,0 +1,55 @@ +package com.avaje.tests.model.info; + +import com.avaje.ebean.Model; + +import javax.persistence.*; + +@Entity +public class InfoCustomer extends Model { + + public static Finder find = new Finder(Long.class, InfoCustomer.class); + + @Id + Long id; + + @Version + Long version; + + String name; + + @OneToOne(cascade = CascadeType.ALL) + //@JoinColumn(name = "id_info_company") + InfoCompany infos = new InfoCompany(); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public InfoCompany getInfos() { + return infos; + } + + public void setInfos(InfoCompany infos) { + this.infos = infos; + } +}