mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
FIX: load all props from cache when inheritance is involved (#1366)
This commit is contained in:
committed by
Rob Bygrave
parent
756f867ed2
commit
49d9d88fbe
@@ -0,0 +1,39 @@
|
||||
package org.tests.cache;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.basic.OCachedInhChildA;
|
||||
import org.tests.model.basic.OCachedInhRoot;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* Test class testing deleting/invalidating of cached beans
|
||||
*/
|
||||
public class TestCacheManyToOne extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void crudInvoice() {
|
||||
|
||||
OCachedInhChildA bean = new OCachedInhChildA();
|
||||
bean.setName("Roland");
|
||||
bean.setChildAData("ChildData");
|
||||
Ebean.save(bean);
|
||||
|
||||
Ebean.find(OCachedInhRoot.class).select("id").where().idIn(bean.getId()).findEach(bean0 -> {
|
||||
assertNotNull(bean0);
|
||||
assertThat(bean0.getName()).isEqualTo("Roland");
|
||||
assertThat(((OCachedInhChildA)bean0).getChildAData()).isEqualTo("ChildData");
|
||||
});
|
||||
|
||||
Ebean.find(OCachedInhRoot.class).select("id").where().idIn(bean.getId()).findEach(bean1 -> {
|
||||
assertNotNull(bean1);
|
||||
assertThat(bean1.getName()).isEqualTo("Roland");
|
||||
// this will fail if the bean is loaded from cache and the wrong discriminator is used.
|
||||
assertThat(((OCachedInhChildA)bean1).getChildAData()).isEqualTo("ChildData");
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import javax.persistence.DiscriminatorValue;
|
||||
import javax.persistence.Entity;
|
||||
|
||||
|
||||
/**
|
||||
* Child bean A
|
||||
*/
|
||||
@Entity
|
||||
@DiscriminatorValue("childA")
|
||||
public class OCachedInhChildA extends OCachedInhRoot {
|
||||
|
||||
String childAData;
|
||||
|
||||
/**
|
||||
* @return the childAData
|
||||
*/
|
||||
public String getChildAData() {
|
||||
return childAData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param childAData
|
||||
* the childAData to set
|
||||
*/
|
||||
public void setChildAData(String childAData) {
|
||||
this.childAData = childAData;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import javax.persistence.DiscriminatorValue;
|
||||
import javax.persistence.Entity;
|
||||
|
||||
|
||||
/**
|
||||
* Child bean B
|
||||
*/
|
||||
@Entity
|
||||
@DiscriminatorValue("childB")
|
||||
public class OCachedInhChildB extends OCachedInhRoot {
|
||||
String childBData;
|
||||
|
||||
/**
|
||||
* @return the childBData
|
||||
*/
|
||||
public String getChildBData() {
|
||||
return childBData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param childBData
|
||||
* the childBData to set
|
||||
*/
|
||||
public void setChildBData(String childBData) {
|
||||
this.childBData = childBData;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import io.ebean.annotation.Cache;
|
||||
|
||||
/**
|
||||
* Cached entity for inheritance.
|
||||
*
|
||||
* @author Roland Praml, FOCONIS AG
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "o_cached_inherit")
|
||||
@Inheritance
|
||||
@Cache
|
||||
public abstract class OCachedInhRoot {
|
||||
|
||||
@Id
|
||||
Long id;
|
||||
|
||||
String name;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user