Я настраиваю документ с аннотацией @Id
, и в моих тестах я получаю MappingException
, потому что Id не устанавливается при создании нового документа. Spring-data + couchbase не может автоматически назначать идентификатор для новых документов?
Spring Data Couchbase: автоматическое создание идентификатора
Ответы (5)
В Couchbase нет автоматического создания идентификаторов, поэтому вам нужно установить его.
Имейте в виду, что Couchbase может хранить разнородные данные в одном и том же Bucket
, поэтому по умолчанию, если у вас есть несколько типов сущностей, они будут в одной и той же единице хранения. Поэтому, если у вас, например. User
и Product
сущности, создавая и сохраняя User
, который @Id
имеет значение "foo", тогда Product
также с идентификатором "foo" в конечном итоге перезапишет User
на Product
.
Я имею в виду, что вы должны предоставить @Id
и убедиться, что идентификаторы не совпадают, даже между классами сущностей.
На момент фиксации 069ceea spring-data-couchbase, похоже, включает поддержка автогенерирования ключей с использованием сгенерированных ключей по свойствам или уникальным UUID. См. person Mico schedule 13.04.2017
Вот правильный ответ.
@Document
public class User {
@Id @GeneratedValue(strategy = UNIQUE)
private String id;
...
}