fixed persistence unit util lookup for uninitialized cross-store entities

This commit is contained in:
Michael Hunger
2011-03-29 01:45:07 +02:00
parent 66556f3492
commit ef0a856fe6
2 changed files with 9 additions and 3 deletions

View File

@@ -23,6 +23,7 @@ import org.springframework.data.graph.neo4j.finder.FinderFactory;
import org.springframework.data.graph.neo4j.support.GraphDatabaseContext;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnitUtil;
public class NodeEntityStateFactory {
@@ -37,7 +38,7 @@ public class NodeEntityStateFactory {
public EntityState<NodeBacked,Node> getEntityState(final NodeBacked entity) {
final NodeEntity graphEntityAnnotation = entity.getClass().getAnnotation(NodeEntity.class); // todo cache ??
if (graphEntityAnnotation.partial()) {
final PartialNodeEntityState<NodeBacked> partialNodeEntityState = new PartialNodeEntityState<NodeBacked>(null, entity, entity.getClass(), graphDatabaseContext, finderFactory,entityManagerFactory.getPersistenceUnitUtil());
final PartialNodeEntityState<NodeBacked> partialNodeEntityState = new PartialNodeEntityState<NodeBacked>(null, entity, entity.getClass(), graphDatabaseContext, finderFactory, getPersistenceUnitUtils());
return new DetachedEntityState<NodeBacked, Node>(partialNodeEntityState, graphDatabaseContext) {
@Override
protected boolean isDetached() {
@@ -51,7 +52,12 @@ public class NodeEntityStateFactory {
}
}
public void setNodeDelegatingFieldAccessorFactory(
private PersistenceUnitUtil getPersistenceUnitUtils() {
if (entityManagerFactory == null) return null;
return entityManagerFactory.getPersistenceUnitUtil();
}
public void setNodeDelegatingFieldAccessorFactory(
NodeDelegatingFieldAccessorFactory nodeDelegatingFieldAccessorFactory) {
this.nodeDelegatingFieldAccessorFactory = nodeDelegatingFieldAccessorFactory;
}

View File

@@ -165,6 +165,6 @@ public class PartialNodeEntityState<ENTITY extends NodeBacked> extends DefaultEn
}
public Object getId(final Object entity) {
return persistenceUnitUtil.getIdentifier(entity);
return persistenceUnitUtil!=null ? persistenceUnitUtil.getIdentifier(entity) : null;
}
}