Fix for #77 - NPE when lazy loading on a OneToMany that is not a leaf

This commit is contained in:
Rob Bygrave
2014-03-31 22:06:10 +13:00
parent 189e0a2ea9
commit 34347fc3e1
6 changed files with 217 additions and 1 deletions
@@ -5,6 +5,8 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.persistence.Entity;
import com.avaje.ebean.bean.PersistenceContext;
import com.avaje.ebeaninternal.api.Monitor;
@@ -124,7 +126,7 @@ public final class DefaultPersistenceContext implements PersistenceContext {
private ClassContext getClassContext(Class<?> beanType) {
String clsName = beanType.getName();
String clsName = getBeanBaseType(beanType).getName();
ClassContext classMap = typeCache.get(clsName);
if (classMap == null) {
classMap = new ClassContext();
@@ -132,6 +134,16 @@ public final class DefaultPersistenceContext implements PersistenceContext {
}
return classMap;
}
private Class<?> getBeanBaseType(Class<?> beanType) {
Class<?> parent = beanType.getSuperclass();
while (parent != null && parent.isAnnotationPresent(Entity.class)) {
beanType = parent;
parent = parent.getSuperclass();
}
return beanType;
}
private static class ClassContext {