Я пытался, но не смог имитировать статью Baeldung * Пошаговое руководство о том, как вызвать сохранение «потомка»: объекта, который «содержится» в другом с помощью Spring Boot @DBRef. аннотаций. В моем случае я пытаюсь восстановить адрес (дочерний) от клиента.
Я публикую свой краткий файл конфигурации, а также подозрительный код, потому что я не знаю, искажен ли он.
Код, который я подозреваю, является ошибочным, находится в классе под названием «CustomerCascadeSaveMongoEventListener.java» в src> main> java> foo.bar и выглядит так:
@Override
public class CustomerCascadeSaveMongoEventListener extends AbstractMongoEventListener {
@Autowired
private MongoOperations mongoOperations;
@Override
public void onBeforeConvert(BeforeConvertEvent<Object> event) {
Object source = event.getSource();
if ((source instanceof Customer) && (((Customer) source).getAddress() != null)) {
mongoOperations.save(((Customer) source).getAddress());
}
}
}
IntelliJ red-squiggles @Override для отсутствия переопределения и сигнатура метода по той же причине, что и сообщение об ошибке.
Из-за отсутствия знаний, как еще его назвать, мой XML-файл называется "cascade.properties", находится в разделе ресурсов src> main> java> foo.bar> и выглядит так:
<mongo:mongo-client id="mongoClient" host="localhost" />
<mongo:db-factory id="mongoDbFactory" dbname="test" mongo-ref="mongoClient" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory"/>
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean class="org.baeldung.event.CustomerCascadeSaveMongoEventListener" />
Наконец, внутри моего класса Customer поле, ссылающееся на адрес, выглядит так:
@DBRef
@NotNull
private Address address;
Основное сообщение об ошибке выглядит следующим образом:
Ошибка: (16, 17) java: имя конфликтует: onBeforeConvert (org.springframework.data.mongodb.core.mapping.event.BeforeConvertEvent) в io.catalyte.training.CustomerCascadeSaveMongoEventListener и onBeforeConvert. Org.spr. mongodb.core.mapping.event.BeforeConvertEvent) в org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener имеют такое же стирание, но ни один не переопределяет другие
Я думаю, что решение этой проблемы также устранит второе сообщение об ошибке:
Ошибка: (15, 5) java: метод не переопределяет или не реализует метод из супертипа
Хотя мой файл конфигурации может не иметь ничего общего с ошибкой (ями), я был бы признателен за указатели, если что-либо в его содержимом не будет поддерживаться или будет ненужным для каскадного сохранения, которое я собираюсь использовать. Пока что его содержание было написано только с целью поддержки этой функции.