Intereting Posts
Джексон-десериализация – классы данных Kotlin – значения по умолчанию для отсутствующих полей на картографе Общий код между сервером Kotlin и клиентскими проектами с использованием Gradle Как интерпретировать и переводить код kotlin в java? Ссылки на общие функции объекты закрытого класса, загадочно становящиеся нулевыми, если ссылаются на другие объекты-компаньоны Многостраничный запрос с обновлением @PartMap Ошибка в Kotlin (Android) Ассоциированная сертификация разработчика Android переместить вид в зависимости от направления движения Ошибки привязки данных в прикладном модуле ThumbnailUtils.createVideoThumbnail сбой, несмотря на допустимый путь к файлу Как показать один элемент, выбранный в recyclerview, используя kotlin Преобразуйте MainActivity с помощью панели действий / панели инструментов и кнопки с плавающей точкой в ​​Anko Mockito / Powermock не работает должным образом с Kotlin Функция Kotlin Call Javascript в Android без webView Использование объекта-компаньона для возврата экземпляра класса в Котлин

@PrePersist Вариант EventListener для spring-data-mongo

Я создал Repository для автоматического увеличения идентификатора @Document но прямо сейчас мне нужно явно вызвать метод set @Id setter для установки нового идентификатора. Есть ли способ, которым я могу это сделать, используя слушателей, например, в JPA @PrePersist

 @Repository interface UserRepository : MongoRepository<User, Long>, UserRepositoryCustom interface UserRepositoryCustom { fun save(user: User): User } class UserRepositoryImpl(private val mongoOperations: MongoOperations, private val sequenceRepository: SequenceRepository) : UserRepositoryCustom { override fun save(user: User): User { // need to call this line for every @Document user.id = sequenceRepository.getNextId(User.SEQUENCE_KEY) mongoOperations.insert(user) return user } } 

Код GitHub

Если я реализую свой код, как это, мне нужно вызвать sequenceRepository.getNextId(...) для каждого документа, прежде чем я его сохраню.

В JPA мы можем использовать EventListeners например @PrePersist . Есть ли альтернатива или аналогичная функция spring-data-mongo для достижения этого?

Весной данные mongo предоставляют прослушиватели событий. Например, вы можете расширить класс AbstractMongoEventListener и переопределить метод ниже для достижения эквивалента PrePersist,

 public void onBeforeSave(BeforeSaveEvent<E> event) { if (LOG.isDebugEnabled()) { LOG.debug("onBeforeSave({}, {})", event.getSource(), event.getDBObject()); } }