【发布时间】:2021-11-30 05:28:24
【问题描述】:
我的要求是 - 基于属性文件中标志的值(例如,skipDbUpdate),我想保存/更新实体或在正在进行的事务中跳过这些实体。 我已经在实体上实现了一个侦听器,如果此标志为真,它将引发异常,但现在我必须增强此行为以不引发错误但跳过实体的更新。我尝试了以下选项:
- 实体上的@Immmutable 注释 - 我无法基于此标志,应用程序使用 spring,但我无法将 @ConditionalOnProperty 注释与 @Entity 和 @Immutatble 注释结合起来。
@Entity @Immutatble public class EntityA {}
-
在 @Column 注释内实体的每个字段上使用 updateable=false, insertable=false - 再次,我无法基于此标志(原因与上述相同)。
@Column(insertable = false, updatable = false) -
当标志为真时,在侦听器中调用 entityManager.detach(o) 方法,如此问题中所建议的 - How to make an Entity read-only? 但这是试图从其他事务中保存实体并抛出错误 - “
java.lang.RuntimeException: org.hibernate.HibernateException: Found two representations of same collection:"
由于这是只使用 spring 的旧代码库,我不能那么容易地使用注释。
请建议哪种方式是满足此要求的最佳方式?
谢谢
【问题讨论】:
标签: java hibernate spring-mvc jpa transactions