【发布时间】:2020-07-12 13:45:14
【问题描述】:
在我们的 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 用于获取整个对象并对其进行更新。
问题是当使用 JPA 标准 API 更新 DataWriteEntity 时,hibernate 仍然显示警告
SessionImpl - HHH000487: The query: [here goes update query] attempts to update an immutable entity: [TBL_DATA],更新成功。
所以问题是 - 我们应该删除 @Immutable 注释还是忽略此警告,因为它按预期工作?认为 DataReadEntity 永远不会用于更新操作(甚至没有实现 setter)。
Spring Boot 应用程序正在使用默认配置 - spring.jpa.open-in-view is enabled by default。
【问题讨论】:
标签: java database spring-boot hibernate jpa