2013-06-09 2 views
0

Помогите мне разобраться в этом. Я использую spring-data-mongodb без спящего режима или любого другого поставщика jpa. Моя модель предметной области, как это:Spring JPA mongodb с помощью аннотаций

public class User { 
    @Id 
    private String id; 
    private String username; 
    private String password; 
    ... 
} 

Я бег тестового класса, чтобы заполнить несколько пользователей в моей MongoDB, который работает отлично. Но если я добавлю еще несколько аннотаций, как это:

public class User { 
    @Id 
    private String id; 
    @Field(value="uname") private String username; 
    @Field(value="pass")private String password; 
    ... 
} 

мой тестовый класс добавляет только один пользователь, следующий один бросает исключение дубликатов жалуются записи -

org.springframework.dao.DuplicateKeyException: E11000 - двойной идентификатор ошибки: gldata.user. $ Username_-1 dup key: {: null}; вложенное исключение составляет com.mongodb.MongoException $ DuplicateKey: E11000 дубликат ключа индекса ошибки:. gldata.user $ username_-1 DUP ключ: {: нуль}

Что я здесь отсутствует?

+0

Моя догадка заключается в том, что во втором случае Spring-JPA не может автоматически генерировать идентификаторы, первый id (идентификатор объекта в mongo) генерируется с использованием null, второй id становится дубликатом. Но почему? – Jayz

ответ

0

Хотя я не узнал, почему это происходит, я нашел обходное решение. Использование ObjectId вместо String для поля id работает очень хорошо.

Смежные вопросы