From ef0a856fe66a3856efd2d6c53f2222cca318e867 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Tue, 29 Mar 2011 01:45:07 +0200 Subject: [PATCH] fixed persistence unit util lookup for uninitialized cross-store entities --- .../neo4j/fieldaccess/NodeEntityStateFactory.java | 10 ++++++++-- .../neo4j/fieldaccess/PartialNodeEntityState.java | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/NodeEntityStateFactory.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/NodeEntityStateFactory.java index d3ff613b6..b9d574693 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/NodeEntityStateFactory.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/NodeEntityStateFactory.java @@ -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 getEntityState(final NodeBacked entity) { final NodeEntity graphEntityAnnotation = entity.getClass().getAnnotation(NodeEntity.class); // todo cache ?? if (graphEntityAnnotation.partial()) { - final PartialNodeEntityState partialNodeEntityState = new PartialNodeEntityState(null, entity, entity.getClass(), graphDatabaseContext, finderFactory,entityManagerFactory.getPersistenceUnitUtil()); + final PartialNodeEntityState partialNodeEntityState = new PartialNodeEntityState(null, entity, entity.getClass(), graphDatabaseContext, finderFactory, getPersistenceUnitUtils()); return new DetachedEntityState(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; } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityState.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityState.java index d24da392f..317902e1e 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityState.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityState.java @@ -165,6 +165,6 @@ public class PartialNodeEntityState extends DefaultEn } public Object getId(final Object entity) { - return persistenceUnitUtil.getIdentifier(entity); + return persistenceUnitUtil!=null ? persistenceUnitUtil.getIdentifier(entity) : null; } }