2012-03-08 15 views
0

私はSpring-data-Neo4JとSpring-data-MongoDbを併用しています。 UserRepositoryでsaveメソッドを呼び出すと、エラーが発生します。どんな助けでも大歓迎です。以下は春データneo4jとmogodbが混在しています

マイドメインクラス

@Document 
@NodeEntity(partial=true) 
public class User implements Serializable { 

private static final long serialVersionUID = 1L; 

@GraphId Long id; 
@Id 
private String userId; 
private String firstName; 
private String lastName; 

@GraphProperty 
private String username; 

エラーログです:

とjava.lang.ClassCastException:org.springframework.data.neo4j.support.mapping.Neo4jPersistentEntityImplはorg.springframeworkにキャストすることはできません。 data.mongodb.core.mapping.MongoPersistentEntity org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.onApplicationEvent(MongoPersistentEntityIndexCreator.java:79) org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.onApplicationEvent(MongoPersistent EntityIndexCreator.java:47) org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97) org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324) org.springframework.data .mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:263) org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:165) org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity (AbstractMappingContext.java:140) org.springframework.data.neo4j.support.Neo4jTemplate.getPersistentEntity(Neo4jTemplate.java:573) org.springframework.data.neo4j.support.Neo4jTemplate.g (Neo4jTemplate.java:631) org.springframework.data.neo4j.support.Neo4jTemplate.save(Neo4jTemplate.java:295) org.springframework.data.neo4j.repository.AbstractGraphRepository.save(AbstractGraphRepository.java:106) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 日.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupp ort.java:323) org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:308) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke (RefistiveMethodInvocation.java:172) roxy.invoke(JdkDynamicAopProxy.java:202) $ Proxy82.save(不明なソース) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect .DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) ORG。 springframework.aop.framework。ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) ORG .springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $ Proxy84.save(不明なソース)

答えて

0

I Spring Data MongoDBのための@DocumentとSpring Data Neo4jのための@NodeEntityとを組み合わせたからだと思います。これらのアノテーションを組み合わせることはできません。

@Document

春データ/ MongoDBのサポート内のオブジェクトのマッピング機能をフル活用するために、あなたは、@ org.springframework.data.mongodb.coreを使用してマッピングされたオブジェクトに注釈を付ける必要があります。 mappingDocumentアノテーション。マッピングフレームワークがこのアノテーションを持つ必要はありません(注釈がなくてもPOJOは正しくマップされますが)、クラスパススキャナはドメインオブジェクトを見つけて事前処理して、必要なメタデータを抽出することができます。このアノテーションを使用しない場合、ドメインオブジェクトのプロパティについて知るように、マッピングフレームワークで内部メタデータモデルを構築する必要があるため、ドメインオブジェクトを初めて格納するときにはアプリケーションのパフォーマンスがわずかに低下しますそれらを維持する。 @NodeEntity注釈グラフデータベース内のノードによってバックアップエンティティにPOJOクラスを回すために使用されるhttp://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/

@NodeEntity

参照。エンティティのフィールドは、デフォルトでノードのプロパティにマップされます。他のノードエンティティ(またはそのコレクション)を参照するフィールドは、リレーションシップにリンクされています。参照してくださいhttp://static.springsource.org/spring-data/data-neo4j/docs/2.0.0.RELEASE/reference/html/#d0e1621

+0

こんにちはkrams、おかげであなたの迅速な応答を、私はMongoDBのとのNeo4jのために独自の注釈を持つ別のエンティティクラスを作成しようとしたが、私はまだ同じerror.IがGoogleグループからの議論を見つけ取得誰かが同じ問題を抱えているようですが、残念ながら私は答えを見つけることができません。 [link](http://groups.google.com/group/neo4j/browse_thread/thread/9513a44199c5981e)をこちらから確認してください。 Spring Data MongoDBとSpring Data Neo4jを統合する方法はありますか? – gozizibj

+0

@krams:あなたは説明なしで物事を引用することはできませんが、なぜそれらを組み合わせることができなかったのか説明しません。あなたは完全にポイントを逃している:彼は両方を組み合わせたいので、もちろん、彼は彼らが異なることを知って、一緒に仕事をしようとしている – Guillaume

+0

@ zizibj:あなたは解決策を見つけましたか?私も両方を使用したいと思っていましたが、私はいくつかのクエリのエラーを今持っている。私はNeo4jとMongoDBの両方に対して1つのクラスだけを使いたいと思っていますが、2を使う必要があるのは残念ですが、他の解決策がない場合は... – Guillaume

関連する問題