mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Add Wobu TestCacheDelete test case for cached beans
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package com.avaje.tests.cache;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.tests.model.basic.OCachedBean;
|
||||
import com.avaje.tests.model.basic.OCachedBeanChild;
|
||||
|
||||
/**
|
||||
* Test class testing deleting/invalidating of cached beans
|
||||
*/
|
||||
public class TestCacheDelete extends BaseTestCase {
|
||||
|
||||
/**
|
||||
* When deleting a cached entity all entities with a referenced OneToMany relation must also be invalidated!
|
||||
*/
|
||||
@Test
|
||||
public void testCacheDeleteOneToMany() {
|
||||
// arrange
|
||||
OCachedBeanChild child = new OCachedBeanChild();
|
||||
OCachedBeanChild child2 = new OCachedBeanChild();
|
||||
|
||||
OCachedBean cachedBean = new OCachedBean();
|
||||
cachedBean.getChildren().add(child);
|
||||
cachedBean.getChildren().add(child2);
|
||||
Ebean.save(cachedBean);
|
||||
|
||||
// ensure cache has been populated
|
||||
Ebean.find(OCachedBeanChild.class, child.getId());
|
||||
child2 = Ebean.find(OCachedBeanChild.class, child2.getId());
|
||||
cachedBean = Ebean.find(OCachedBean.class, cachedBean.getId());
|
||||
|
||||
// act
|
||||
Ebean.delete(child2);
|
||||
|
||||
// assert
|
||||
Assert.assertTrue(Ebean.find(OCachedBean.class, cachedBean.getId()).getChildren().size() == 1);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@ package com.avaje.tests.model.basic;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.ManyToMany;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import com.avaje.ebean.annotation.CacheStrategy;
|
||||
@@ -22,10 +24,13 @@ public class OCachedBean {
|
||||
Long id;
|
||||
|
||||
String name;
|
||||
|
||||
|
||||
@ManyToMany
|
||||
List<Country> countries = new ArrayList<Country>();
|
||||
|
||||
@OneToMany(mappedBy = "cachedBean", cascade = CascadeType.ALL)
|
||||
List<OCachedBeanChild> children = new ArrayList<OCachedBeanChild>();
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
@@ -49,4 +54,12 @@ public class OCachedBean {
|
||||
public void setCountries(List<Country> countries) {
|
||||
this.countries = countries;
|
||||
}
|
||||
|
||||
public List<OCachedBeanChild> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void setChildren(List<OCachedBeanChild> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.avaje.tests.model.basic;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import com.avaje.ebean.annotation.CacheStrategy;
|
||||
|
||||
/**
|
||||
* Cached bean for testing caching implementation, especially relations.
|
||||
*/
|
||||
@CacheStrategy
|
||||
@Entity
|
||||
@Table(name = "o_cached_bean_child")
|
||||
public class OCachedBeanChild {
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user