2012-05-11 9 views
1

2つのカスタムオブジェクト間をマッピングするHashMapを含むUserクラスがあります。マッププロパティの処理を設定する方法

現在、私が取得するMongoDBのユーザーのいずれかを保存しようとするたびに:

org.springframework.data.mapping.model.MappingException: Map key [email protected] contains dots but no replacement was configured! Make sure map keys don't contain dots in the first place or configure an appropriate replacement! 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.potentiallyEscapeMapKey(MappingMongoConverter.java:548) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeMapInternal(MappingMongoConverter.java:512) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writePropertyInternal(MappingMongoConverter.java:385) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$3.doWithPersistentProperty(MappingMongoConverter.java:346) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$3.doWithPersistentProperty(MappingMongoConverter.java:335) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:173) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:335) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:307) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.write(MappingMongoConverter.java:272) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.write(MappingMongoConverter.java:73) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.MongoTemplate.doSave(MongoTemplate.java:717) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:707) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:703) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na] 
at net.bigpoint.globalchat.hazelcast.MongoMapStore.store(MongoMapStore.java:81) [classes/:na] 
at net.bigpoint.globalchat.hazelcast.MongoMapStore.store(MongoMapStore.java:1) [classes/:na] 
at com.hazelcast.impl.concurrentmap.MapStoreWrapper.store(MapStoreWrapper.java:110) [hazelcast-2.0.2.jar:2.0.2] 
at com.hazelcast.impl.ConcurrentMapManager$PutOperationHandler$PutStorer.doMapStoreOperation(ConcurrentMapManager.java:2736) [hazelcast-2.0.2.jar:2.0.2] 
at com.hazelcast.impl.ConcurrentMapManager$AbstractMapStoreOperation.run(ConcurrentMapManager.java:3440) [hazelcast-2.0.2.jar:2.0.2] 
at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212) [hazelcast-2.0.2.jar:2.0.2] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_04] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_04] 
at java.lang.Thread.run(Thread.java:722) [na:1.7.0_04] 

春データをデシリアライズすることは不可能だろうのtoStringを呼び出して、キーをシリアル化しようとすると私には思えます。

私はすでに両方のクラスのインスタンスを文字列に変換でき、その逆も可能なコンバータを持っていますので、セットアップに何が問題になりますか?

EDIT

MappingMongoConverterクラスは、それは単に文字列にキーを回すとDBObjectをに文字列を書き込むことのtoStringを使用して、管理しやすいものにキーを回すためにコンバータを使用していないいくつかのanoyingの理由。文字列(ここではオブジェクトとして扱わ)が正しいキータイプに変換され、直列化復元の際

....

答えて

1

動作が意図されている場合、私はわからないが、私は私の編集マップキーで説明したようにtoString(Float、Doubleなどで動作します)を呼び出すことによって「シリアライズ」され、コンフィグレーションされたコンバータを使用してデシリアライズされます。

だから、私にとっての解決策は、クラスtoStringメソッドでcomplexClassToStringコンバーターを呼び出すことでした。これは、問題のクラスがモデルのIDとして使用されているため、私はすでにこのコンバータを持っていたためにのみ可能でした。

関連する問題