2012-01-10 5 views
2

ここでは、MongoDBのSpring-Data内の別のものからオブジェクトを参照するための@DBRefアノテーションを試しています。しかし、MongoAppクラスを実行した後、結果テーブルのデータがDBに挿入されていますが、次の例のように、Personオブジェクト挿入の例外が見つかりませんでした。ここで何が起こっていますか?アプリケーション上でその件次の例外を実行した後参照のために@DBRefアノテーションを使用している間のMongoDB例外のスプリングデータ

public class Result { 

    @Id 
    @NotNull 
    private String subjectId; 

    @NotNull 
    private String subName; 

    @NotNull 
    @Max(value = 100) 
    private int marks; 

    public Result(String subjectId, String subName, int marks) { 
    this.subjectId = subjectId; 
    this.subName = subName; 
    this.marks = marks; 
    } 
} 

public class Person { 


     @Id 
     @NotNull 
     private String abc; 

     @NotNull 
     @Size(max = 8, min = 4, message = "Not a Valid Name") 
     private String name; 

     @Max(value = 100) 
     private int age; 

     @DBRef(collection = "result") 
     private Result result; 

     public Person(String id, String name, int age, Result result) { 
     this.abc = id; 
     this.name = name; 
     this.age = age; 
     this.result = result; 
     } 
} 

public static void main(String[] args) throws Exception{ 
    String location = "com/springMongo/core/applicationContext-springdata.xml"; 
    ApplicationContext context = new ClassPathXmlApplicationContext(location); 
    MongoOperations mongoOps = (MongoOperations) context.getBean("mongoTemplate"); 
    mongoOps.insert(new Result("1","Math",50)); 

    Query query = new Query(Criteria.where("subjectId").is("1")); 
    mongoOps.insert(new Person("1212", "Ravi", 34, mongoOps.findOne(query, Result.class))); 
} 

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.data.mongodb.core.mapping.MongoPersistentProperty.isCollection()Z 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writePropertyInternal(MappingMongoConverter.java:448) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$5.doWithAssociation(MappingMongoConverter.java:433) 
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithAssociations(BasicPersistentEntity.java:185) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:420) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:351) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.write(MappingMongoConverter.java:316) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.write(MappingMongoConverter.java:77) 
at org.springframework.data.mongodb.core.MongoTemplate.doInsert(MongoTemplate.java:592) 
at org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:554) 
at org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:545) 
at com.springMongo.core.MongoApp.main(MongoApp.java:43) 
+0

どのバージョンのスプリングデータとmongodbドライバを使用していますか? – mstearn

+0

mongo-java-driver 2.7.2; spring-data-mongodb 1.0.0.M5; spring-core 3.1.0.RELEASE;スプリングコンテキスト3.1.0.RELEASE; spring-data-commons-core 1.2.0.RELEASE –

答えて

0

これは、jarファイルの依存関係の問題のWRTのバージョンのように聞こえます。

正しいバージョンのスプリングデータジャーと一致するmongodbドライバjarが正しいバージョンであることを確認してください。

+0

最新のmongo-java-driver 2.7.2と最新のspring-data-mongodb 1.0.0.M5を使用していますが、依然として問題あり –

+0

重複したjarファイルはありますか複数のバージョンがありますか? –

+0

いいえ、あまりにもシナリオではない –

0

NoSuchMethodExceptionが元の呼び出しの結果と非常に同じJAR内のクラスに対してスローされるため、少し奇妙に思えます。あなたは次のことを試してみませんか?

  • あなたは春を持っていることを確認し
  • 春データのMongoDBの最新1.0.0.RELEASEのバージョンを使用してみてください
  • 、あなたのクラスパスにspring-data-mongodb-${version}.jarの複数のバージョンを持っていない、出力フォルダなどを確認してくださいデータのMongoDBと春データ・コモンズ春データのMongoDBのpom.xmlにし、参照ドキュメント
0

に記載されているようにバージョンが一致するには、私は同じ問題を抱えていました。私の場合、依存関係をアップグレードすることで問題は解決しました。

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-mongodb</artifactId> 
<!-- <version>1.0.0.M5</version> --> 
    <version>1.0.1.RELEASE</version> 
</dependency> 
関連する問題