add test case to show delete with version

This commit is contained in:
Roland Praml
2019-04-08 17:21:23 +02:00
parent f4db7ca0bb
commit 3e3f3c35e7
3 changed files with 175 additions and 0 deletions
@@ -0,0 +1,44 @@
package org.tests.cascade;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Version;
@Entity
public class RelDetail {
@Id
Long id;
String name;
@Version
int version;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "detail")
private List<RelMaster> masterRel;
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 List<RelMaster> getMasterRel() {
return masterRel;
}
}
@@ -0,0 +1,48 @@
package org.tests.cascade;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Version;
@Entity
public class RelMaster {
@Id
Long id;
String name;
@Version
int version;
@ManyToOne(cascade = CascadeType.REMOVE)
private RelDetail detail;
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 RelDetail getDetail() {
return detail;
}
public void setDetail(RelDetail detail) {
this.detail = detail;
}
}
@@ -0,0 +1,83 @@
package org.tests.cascade;
import io.ebean.BaseTestCase;
import io.ebean.Transaction;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import org.junit.Test;
public class TestMasterDetailDelete extends BaseTestCase {
@Test
public void testDeleteOneMasterTxn() {
try (Transaction txn = server().beginTransaction()) {
RelDetail rd = new RelDetail();
rd.setName("test1");
server().save(rd);
RelMaster rm = new RelMaster();
rm.setDetail(rd);
server().save(rm);
List<RelDetail> lst = server().find(RelDetail.class).where().eq("name", "test1").findList();
assertThat(lst).hasSize(1);
server().find(RelMaster.class).delete();
lst = server().find(RelDetail.class).where().eq("name", "test1").findList();
assertThat(lst).isEmpty();
} // no commit
}
@Test
public void testDeleteMultiMasterTxn() {
try (Transaction txn = server().beginTransaction()) {
RelDetail rd = new RelDetail();
rd.setName("test2");
server().save(rd);
RelMaster rm1 = new RelMaster();
rm1.setDetail(rd);
server().save(rm1);
RelMaster rm2 = new RelMaster();
rm2.setDetail(rd);
server().save(rm2);
List<RelDetail> lst = server().find(RelDetail.class).where().eq("name", "test2").findList();
assertThat(lst).hasSize(1);
server().find(RelMaster.class).delete();
lst = server().find(RelDetail.class).where().eq("name", "test2").findList();
assertThat(lst).isEmpty();
} // no commit
}
@Test
public void testDeleteMultiMasterPlain() {
RelDetail rd = new RelDetail();
rd.setName("test3");
server().save(rd);
RelMaster rm1 = new RelMaster();
rm1.setDetail(rd);
server().save(rm1);
RelMaster rm2 = new RelMaster();
rm2.setDetail(rd);
server().save(rm2);
List<RelDetail> lst = server().find(RelDetail.class).where().eq("name", "test3").findList();
assertThat(lst).hasSize(1);
server().find(RelMaster.class).delete();
lst = server().find(RelDetail.class).where().eq("name", "test3").findList();
assertThat(lst).isEmpty();
}
}