mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-22 05:02:10 +00:00
ADD: testcase for broken lazyload
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package org.tests.cache;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.tests.model.cache.M2MCacheChild;
|
||||
import org.tests.model.cache.M2MCacheMaster;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.DB;
|
||||
|
||||
public class TestM2MCache extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testM2MWithCache() throws Exception {
|
||||
M2MCacheChild cld = new M2MCacheChild();
|
||||
cld.setName("test");
|
||||
cld.setId(1);
|
||||
DB.save(cld);
|
||||
|
||||
M2MCacheMaster cfg = new M2MCacheMaster();
|
||||
cfg.setId(42);
|
||||
cfg.getSet1().add(cld);
|
||||
cfg.getSet2().add(cld);
|
||||
DB.save(cfg);
|
||||
|
||||
// find master and access set1 + set2.
|
||||
// lazy load something from set1
|
||||
M2MCacheMaster cfg1 = DB.find(M2MCacheMaster.class, 42);
|
||||
|
||||
cfg1.getSet1().size();
|
||||
cfg1.getSet2().size();
|
||||
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
|
||||
|
||||
// do it again
|
||||
cfg1 = DB.find(M2MCacheMaster.class, 42);
|
||||
|
||||
cfg1.getSet1().size();
|
||||
cfg1.getSet2().size();
|
||||
|
||||
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
|
||||
// do it again
|
||||
cfg1 = DB.find(M2MCacheMaster.class, 42);
|
||||
|
||||
cfg1.getSet1().size();
|
||||
cfg1.getSet2().size();
|
||||
|
||||
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testM2MWithCacheMinimal() throws Exception {
|
||||
M2MCacheChild cld = new M2MCacheChild();
|
||||
cld.setName("test");
|
||||
cld.setId(2);
|
||||
DB.save(cld);
|
||||
|
||||
M2MCacheMaster cfg = new M2MCacheMaster();
|
||||
cfg.setId(43);
|
||||
cfg.getSet1().add(cld);
|
||||
cfg.getSet2().add(cld);
|
||||
DB.save(cfg);
|
||||
|
||||
DB.find(M2MCacheMaster.class, 43);
|
||||
|
||||
M2MCacheMaster cfg1 = DB.find(M2MCacheMaster.class, 43);
|
||||
cfg1.getSet2().size();
|
||||
|
||||
cfg1 = DB.find(M2MCacheMaster.class, 43);
|
||||
|
||||
cfg1.getSet1().size();
|
||||
cfg1.getSet2().size();
|
||||
|
||||
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.tests.model.cache;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
|
||||
import io.ebean.annotation.Cache;
|
||||
|
||||
@Entity
|
||||
@Cache(enableQueryCache = true, enableBeanCache = true)
|
||||
public class M2MCacheChild {
|
||||
|
||||
@Id
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package org.tests.model.cache;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToMany;
|
||||
|
||||
import io.ebean.annotation.Cache;
|
||||
|
||||
@Entity
|
||||
@Cache(enableQueryCache = true, enableBeanCache = true)
|
||||
public class M2MCacheMaster {
|
||||
|
||||
@Id
|
||||
private Integer id;
|
||||
|
||||
@ManyToMany(cascade = CascadeType.ALL)
|
||||
@JoinTable(name = "m2mcache_set1")
|
||||
private Set<M2MCacheChild> set1 = new LinkedHashSet<>();
|
||||
|
||||
@ManyToMany(cascade = CascadeType.ALL)
|
||||
@JoinTable(name = "m2mcache_set2")
|
||||
private Set<M2MCacheChild> set2 = new LinkedHashSet<>();
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Set<M2MCacheChild> getSet1() {
|
||||
return set1;
|
||||
}
|
||||
|
||||
public void setSet1(Set<M2MCacheChild> set1) {
|
||||
this.set1 = set1;
|
||||
}
|
||||
|
||||
public Set<M2MCacheChild> getSet2() {
|
||||
return set2;
|
||||
}
|
||||
|
||||
public void setSet2(Set<M2MCacheChild> set2) {
|
||||
this.set2 = set2;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user