В нашем приложении Spring Boot у нас есть две сущности для одной и той же таблицы.
@Entity
@Table(name = "TBL_DATA")
@Immutable
public class DataReadEntity {
// getters only
...
// specific @OneToMany and @OneToOne relations only present in this entity
}
@Entity
@Table(name = "TBL_DATA")
@DynamicUpdate
public class DataWriteEntity {
// getters and setters
}
DataReadEntity используется только для поиска данных и всегда используется в отдельном API. DataWriteEntity используется для выборки всего объекта и его обновления.
Проблема в том, что спящий режим по-прежнему показывает предупреждение при обновлении DataWriteEntity с помощью API критериев JPA SessionImpl - HHH000487: The query: [here goes update query] attempts to update an immutable entity: [TBL_DATA]
и обновление выполнено успешно.
Итак, вопрос есть - следует ли нам удалить аннотацию @Immutable
или просто проигнорировать это предупреждение, потому что оно работает должным образом? Считается, что DataReadEntity никогда не будет использоваться для операций обновления (сеттеры даже не реализованы).
Приложение Spring Boot работает с конфигурацией по умолчанию - spring.jpa.open-in-view is enabled by default
.