Intereting Posts
Кинжал 2 не может вводить из подкомпонента (котлин) Расширения Kotlin / синтетические свойства: тот же объект в нескольких вызовах Fragment.onViewCreated () Что такое идиоматический способ Котлин, чтобы получить Логгера? Ошибка сборки Kotlin в Android Studio Как выполнить некоторый код, когда gradle строит тесты recyclerview notifyDataSetChanged () не работает – kotlin Поведение прокрутки списка вложенных списков в Android Как использовать MapBuilder в kotlin и добавить все значения? Хороший способ доступа к смешанным 8/16/32-битным словам Проводка в пользовательский интерфейс Комната Android: каждая переменная связывания в запросе должна иметь соответствующий метод Претендент свойства lateinit не был инициализирован с помощью EasyMVP, Robolectric и Kotlin Kotlin: вызывается функция обновления пользовательского интерфейса от BroadcastReceiver onReceive Почему бы мне не сделать каждый класс класса Котлин классом данных? Как уничтожить список Котлин в подсписках?

@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()); } }