JPA @PrePersist @PreUpdate в интерфейсе - PullRequest
0 голосов
/ 11 октября 2018

Я хотел использовать функцию Java 8 методов по умолчанию в интерфейсах, чтобы автоматически устанавливать дату создания и lastModified в моих сущностях.

Я нашел совет по реализации метода, аннотированного @PrePersist @PreUpdate, иустановите там значения.

Но этот метод не срабатывает при сохранении экземпляра класса, реализующего интерфейс.

Я попробовал добавить другой метод в класс, который вызвалметод в интерфейсе, и это сработало.

Мой вопрос сейчас, если это предполагаемое поведение, что @PrePersist @PreUpdate не работает в интерфейсах.

Спасибо уже.

1 Ответ

0 голосов
/ 13 октября 2018

Мы можем прочитать в документации JPA, что

/**
 * Is used to specify callback methods for the corresponding
 * lifecycle event. This annotation may be applied to methods
 * of an entity class, a mapped superclass, or a callback
 * listener class.
 *
 * @since Java Persistence 1.0
 */
@Target({METHOD})
@Retention(RUNTIME)
public @interface PrePersist {
}

"класса сущности, сопоставленного суперкласса или обратного вызова", где интерфейс не является ни одним из них.

Интерфейсы нельзя применять для изменения структуры сущностей или жизненного цикла.Я не знаю вашей конкретной ситуации, но вы могли бы рассмотреть шаблонный метод или пересмотреть иерархию ваших классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...