mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Fix for #190 - javax.persistence.PersistenceException: Server [null] was not found? at EntityBeanIntercept.loadBean(EntityBeanIntercept.java:693)
This commit is contained in:
@@ -39,8 +39,6 @@ public final class EntityBeanIntercept implements Serializable {
|
||||
private transient PersistenceContext persistenceContext;
|
||||
|
||||
private transient BeanLoader beanLoader;
|
||||
|
||||
private int beanLoaderIndex;
|
||||
|
||||
private String ebeanServerName;
|
||||
|
||||
@@ -200,34 +198,22 @@ public final class EntityBeanIntercept implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the index position for batch loading via BeanLoader.
|
||||
* Set the BeanLoader with PersistenceContext.
|
||||
*/
|
||||
public int getBeanLoaderIndex() {
|
||||
return beanLoaderIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Lazy Loading by ebeanServerName.
|
||||
* <p>
|
||||
* This is for reference beans created by themselves.
|
||||
* </p>
|
||||
*/
|
||||
public void setBeanLoaderByServerName(String ebeanServerName) {
|
||||
this.beanLoaderIndex = 0;
|
||||
this.beanLoader = null;
|
||||
this.ebeanServerName = ebeanServerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the BeanLoader for general lazy loading.
|
||||
*/
|
||||
public void setBeanLoader(int index, BeanLoader beanLoader, PersistenceContext ctx) {
|
||||
this.beanLoaderIndex = index;
|
||||
public void setBeanLoader(BeanLoader beanLoader, PersistenceContext ctx) {
|
||||
this.beanLoader = beanLoader;
|
||||
this.persistenceContext = ctx;
|
||||
this.ebeanServerName = beanLoader.getName();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the BeanLoader.
|
||||
*/
|
||||
public void setBeanLoader(BeanLoader beanLoader) {
|
||||
this.beanLoader = beanLoader;
|
||||
this.ebeanServerName = beanLoader.getName();
|
||||
}
|
||||
|
||||
public boolean isFullyLoadedBean() {
|
||||
return fullyLoadedBean;
|
||||
}
|
||||
|
||||
@@ -1210,8 +1210,7 @@ public class BeanDescriptor<T> implements MetaBeanInfo {
|
||||
convertSetId(id, eb);
|
||||
|
||||
EntityBeanIntercept ebi = eb._ebean_getIntercept();
|
||||
ebi.setBeanLoaderByServerName(ebeanServer.getName());
|
||||
|
||||
ebi.setBeanLoader(ebeanServer);
|
||||
|
||||
// Note: not creating proxies for many's...
|
||||
ebi.setReference(idPropertyIndex);
|
||||
|
||||
@@ -429,18 +429,21 @@ public final class BeanDescriptorCacheHelp<T> {
|
||||
|
||||
EntityBean bean = desc.createEntityBean();
|
||||
desc.convertSetId(id, bean);
|
||||
EntityBeanIntercept ebi = bean._ebean_getIntercept();
|
||||
ebi.setBeanLoader(desc.getEbeanServer());
|
||||
|
||||
if (Boolean.TRUE.equals(readOnly)) {
|
||||
bean._ebean_getIntercept().setReadOnly(true);
|
||||
ebi.setReadOnly(true);
|
||||
}
|
||||
|
||||
beanLoadData(bean, data);
|
||||
|
||||
if (beanLog.isTraceEnabled()) {
|
||||
beanLog.trace(" GET {}({}) - hit", cacheName, id);
|
||||
}
|
||||
return (T) bean;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove a bean from the cache given its Id.
|
||||
*/
|
||||
|
||||
@@ -57,7 +57,7 @@ public class DLoadBeanContext extends DLoadBaseContext implements LoadBeanContex
|
||||
currentBuffer = createBuffer(secondaryBatchSize);
|
||||
}
|
||||
// set the persistenceContext on the bean first
|
||||
ebi.setBeanLoader(0, currentBuffer, getPersistenceContext());
|
||||
ebi.setBeanLoader(currentBuffer, getPersistenceContext());
|
||||
currentBuffer.add(ebi);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user