Spring AbstractMongoEventListener не срабатывает
Контекст: приложение Java8, Spring MongoDB 1.9.1
У меня есть коллекция, содержащая сущности A, и другая коллекция, содержащая сущности B. В моей доменной модели Entity A имеет коллекцию B в виде DBRef, как это
class A {
@DBRef
List<B> myBs;
}
Более того, я зарегистрировал два объекта AbstractMongoEventListener, один для A и другой для B. Если я получаю документ типа A или B напрямую через MongoTemplate.findById(), метод onAfterConvert() срабатывает нормально. Однако, если я просто выберу A, я бы ожидал, что метод onAfterConvert запускается также для каждого элемента B в списке DBRef'а A. На самом деле это не так.
Я рискну предположить, что это работает как задумано, с другой стороны, я не вижу причины, по которой onAfterConvert не должен работать для какой-либо сущности / документа, загружаемого из БД.
Короче говоря, мне нужно сделать некоторую постобработку для всех элементов B после того, как A был загружен. У кого-нибудь есть элегантное решение для этого?
2 ответа
Понятия не имею, если есть лучшие способы решить это, но это работает для меня:
Перезапишите метод resolDbRef() в расширенном DefaultDbRefResolver и передайте ему свой собственный MappingMongoConverter при создании компонента.
Другие ответы / рекомендации приветствуются
Я думаю, что это связано с https://jira.spring.io/browse/DATAMONGO-1044 - должно быть исправлено в следующем основном выпуске Spring Data MongoDB (1.10).