我有一个带有created_date(updateable = false)和updated_date字段的实体。我有@PreUpdate方法,我只更改updated_date值(不更改created_date),以及设置新的created_date和updated_date值的@PrePersist方法。在Persist上,created_date和updated_date被正确保留,返回的实体具有正确的值。当我传入要合并的实体时,它正确地更新了updated_date(@PreUpdate),并且我没有在输入中传递created_date。在数据库中,更新了正确的updated_date值,并且未正确更改created_date值。但是返回的实体将created_date值设置为null。任何想法为什么?合并后的实体不应该返回从数据库加载的完整实体吗?
由于
萨姆
答案 0 :(得分:1)
我认为这与JPA merge javadoc一致。
Merge - 将给定实体的状态合并到当前持久性上下文中,并返回状态合并到的托管实例。
updatable=false
的字段。要触发重新加载,您可以依赖将重新加载数据的refresh(...)。
如果是spring-data-jpa
,则不会公开任何refresh
方法,因此您需要将其添加到您的存储库中,并且可以找到一个示例here并讨论此主题在spring forum here。