Hi All,
First of all, spring-data-neo4j 2.0.0.RELEASE has some broken dependencies, believe it is in spring-data-commons-core. Would really love to see a fix very soon.
A related question I have is that if I need to use mongodb and neo4j together in my application. What versions shall I use so that all the dependencies on common libs would not cause issues.
Below is the main problem I am having right now. Thanks all for looking into this:
I am using Neo4J and MongoDb together. The versions are:
spring-data-neo4j 2.0.0.RC1
spring-data-mongodb 1.0.0.RC1
The spring-data-commons-core version is 1.2.0.M02 . That's the only such jar in my war.
I spent much of the time trying to figure out the right combination of these versions. This at least to get me going with mongodb.
I configure both db in my spring configuration file as:
This is my PersonRepository:Code:<neo4j:config storeDirectory="db/neo4j" /> <mongo:db-factory dbname="mongodb"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongoDbFactory"/> </bean>
The entity is rather simple. It is sitting in the domain module.Code:public interface PersonRepository extends GraphRepository<Person>
There are other entities but all annotated only for Neo4J.Code:@NodeEntity public class Person { @GraphId private Long id; @Indexed private String firstName; private String lastName; private String email; private boolean active; }
I used to the following to configure rest of Neo4J
Calling the save method on PersonRepository generates an error. SameCode:<context:spring-configured/> <context:annotation-config/> <context:component-scan base-package="com.xxxxx.domain" /> <neo4j:repositories base-package="com.xxxxx.domain.repository" />
configuration, I do not have an issue invoking MongoDb operations
using spring-data-mongodb objects and methods.
Here is an exception when calling the save method on my
PersonRespository (extends GraphRepository<Person>):
Code:java.lang.ClassCastException: org.springframework.data.neo4j.support.mapping.Neo4jPersistentEntityImpl cannot be cast to org.springframework.data.mongodb.core.mapping.MongoPersistentEntity at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.onApplicationEvent(MongoPersistentEntityIndexCreator.java: 79) at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.onApplicationEvent(MongoPersistentEntityIndexCreator.java: 47) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java: 97) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java: 303) at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java: 256) at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java: 165) at org.springframework.data.neo4j.mapping.RelationshipInfo.<init>(RelationshipInfo.java: 61) at org.springframework.data.neo4j.mapping.RelationshipInfo.fromField(RelationshipInfo.java: 82) at org.springframework.data.neo4j.support.mapping.Neo4jPersistentPropertyImpl.extractRelationshipInfo(Neo4JPersistentPropertyImpl.java: 92) at org.springframework.data.neo4j.support.mapping.Neo4jPersistentPropertyImpl.<init>(Neo4JPersistentPropertyImpl.java: 57) at org.springframework.data.neo4j.support.mapping.Neo4jMappingContext.createPersistentProperty(Neo4jMappingContext.java: 54) at org.springframework.data.neo4j.support.mapping.Neo4jMappingContext.createPersistentProperty(Neo4jMappingContext.java: 38) at org.springframework.data.mapping.context.AbstractMappingContext $PersistentPropertyCreator.doWith(AbstractMappingContext.java:377) at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java: 513) at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java: 246) at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java: 165) at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java: 140) at org.springframework.data.neo4j.support.Neo4jTemplate.getPersistentEntity(Neo4jTemplate.java: 558) at org.springframework.data.neo4j.support.Neo4jTemplate.getMappingPolicy(Neo4jTemplate.java: 457) at org.springframework.data.neo4j.support.Neo4jTemplate.getMappingPolicy(Neo4jTemplate.java: 616) at org.springframework.data.neo4j.support.Neo4jTemplate.save(Neo4jTemplate.java: 292) at org.springframework.data.neo4j.repository.NodeGraphRepositoryImpl.save(NodeGraphRepositoryImpl.java: 42) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at org.springframework.data.repository.core.support.RepositoryFactorySupport $QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java: 322) at org.springframework.data.repository.core.support.RepositoryFactorySupport $QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java: 307) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 172) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java: 110) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 172) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java: 155) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java: 202) at $Proxy32.save(Unknown Source)


Reply With Quote
