Из беглого взгляда на SimpleGemfireRepository
не похоже, что репозиторий генерирует идентификатор:
@Override
public <U extends T> U save(U entity) {
ID id = entityInformation.getId(entity).orElseThrow(
() -> newIllegalArgumentException("ID for entity [%s] is required", entity));
template.put(id, entity);
return entity;
}
Кроме того, этот вопрос и его ответ предполагают, что существует нет генерации идентификатора в самом Gemfire.
Итак, что вам нужно сделать, это создать свой идентификатор самостоятельно. Например, должно быть возможно иметь два конструктора, один из которых принимает идентификатор, а другой не принимает идентификатор, а генерирует его. UUID
будет очевидным выбором. Если вы привязаны к Long
значениям, вам, вероятно, придется использовать собственный алгоритм.
Чтобы для Spring Data было очевидно, какой конструктор использовать при загрузке экземпляров, вы можете использовать аннотацию @PersistenceConstructor
.
person
Jens Schauder
schedule
27.04.2017