Merge branch 'master' of https://github.com/Ryszard-Trojnacki/avaje-ebeanorm into Ryszard-Trojnacki-master

This commit is contained in:
rob bygrave
2019-09-12 13:58:50 +12:00
3 changed files with 91 additions and 2 deletions
+42 -2
View File
@@ -141,11 +141,11 @@ public class TestCacheCollectionIds extends BaseTestCase {
}
@Test
public void testChangingCollectionByEditingConnectedBean() {
public void testChangingCollectionByEditingConnectedCachedBean() {
ResetBasicData.reset();
OCachedBean cachedBean = new OCachedBean();
cachedBean.setName("hello");
cachedBean.setName("hello1");
Ebean.save(cachedBean);
awaitL2Cache();
@@ -180,6 +180,46 @@ public class TestCacheCollectionIds extends BaseTestCase {
Ebean.delete(cachedBean);
}
@Test
public void testChangingCollectionByEditingConnectedNotCachedBean() {
ResetBasicData.reset();
OCachedBean cachedBean = new OCachedBean();
cachedBean.setName("hello2");
Ebean.save(cachedBean);
awaitL2Cache();
OCachedBean dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(0, dummyToLoad.getNotCachedChildren().size());
OBeanChild child1=new OBeanChild();
child1.setCachedBean(cachedBean);
Ebean.insert(child1);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(1, dummyToLoad.getNotCachedChildren().size());
OBeanChild child2=new OBeanChild();
child2.setCachedBean(cachedBean);
Ebean.insert(child2);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(2, dummyToLoad.getNotCachedChildren().size());
Ebean.delete(child2);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(1, dummyToLoad.getNotCachedChildren().size());
Ebean.delete(child1);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(0, dummyToLoad.getNotCachedChildren().size());
Ebean.delete(cachedBean);
}
/**
* When updating a ManyToMany relations also the collection cache must be updated.
@@ -0,0 +1,38 @@
package org.tests.model.basic;
import io.ebean.annotation.Cache;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
/**
* Not cached bean (copy of {@link OCachedBeanChild}} without {@link Cache} annotation
* for testing caching implementation for relations {@link Cache} and not {@link Cache}.
*/
@Entity
@Table(name = "o_bean_child")
public class OBeanChild {
@Id
Long id;
@ManyToOne
OCachedBean cachedBean;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public OCachedBean getCachedBean() {
return cachedBean;
}
public void setCachedBean(OCachedBean cachedBean) {
this.cachedBean = cachedBean;
}
}
@@ -30,6 +30,9 @@ public class OCachedBean {
@OneToMany(mappedBy = "cachedBean", cascade = CascadeType.ALL)
List<OCachedBeanChild> children = new ArrayList<>();
@OneToMany(mappedBy = "cachedBean", cascade = CascadeType.ALL)
List<OBeanChild> notCachedChildren = new ArrayList<>();
public Long getId() {
return id;
}
@@ -61,4 +64,12 @@ public class OCachedBean {
public void setChildren(List<OCachedBeanChild> children) {
this.children = children;
}
public List<OBeanChild> getNotCachedChildren() {
return notCachedChildren;
}
public void setNotCachedChildren(List<OBeanChild> notCachedChildren) {
this.notCachedChildren = notCachedChildren;
}
}