Исключение Spring-Data для MongoDB при использовании аннотации @DBRef для ссылок - PullRequest
2 голосов
/ 10 января 2012

Здесь я пытаюсь использовать аннотацию @DBRef для ссылки на объект из другого объекта в Spring-Data для MongoDB.Но после запуска класса MongoApp данные таблицы результатов вставляются в БД, но в нем не показано исключение метода, найденного для вставки объекта Person, как в следующем примере.Что здесь происходит?

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)

Ответы [ 3 ]

0 голосов
/ 11 января 2012

Это кажется немного странным, поскольку NoSuchMethodException выбрасывается для класса в том же JAR, что и исходный результат вызова. Не могли бы вы попробовать следующее?

  • Убедитесь, что у вас нет нескольких версий spring-data-mongodb-${version}.jar в вашем пути к классам, папке вывода и т. Д.
  • Попробуйте использовать последнюю версию 1.0.0.RELEASE Spring Data MongoDB
  • Убедитесь, что у вас есть Spring Data MongoDB и Spring Data Commons в соответствующих версиях, как указано в pom.xml Spring Data MongoDB и в справочной документации
0 голосов
/ 12 марта 2012

У меня была такая же проблема. В моем случае, обновление моих зависимостей решило проблему.

<dependency>
   <groupId>org.springframework.data</groupId>
   <artifactId>spring-data-mongodb</artifactId>
<!--   <version>1.0.0.M5</version> -->
   <version>1.0.1.RELEASE</version>
</dependency>
0 голосов
/ 11 января 2012

Это звучит как проблема зависимости jar от версии.

Убедитесь, что у вас есть правильная версия фляги драйвера mongodb, которая соответствует правильной версии фляг данных о пружине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...