Java 列表上的Hibernate Envers错误修改标志
我使用Envers审核数据,有时Java 列表上的Hibernate Envers错误修改标志,java,spring,hibernate-envers,Java,Spring,Hibernate Envers,我使用Envers审核数据,有时\u MOD的值不正确。当我在列表中添加元素时,它将停留在0而不是1。但这只发生在特定的情况下 我的实体: @Entity @Table(name = "PERSONNE") @Audited(withModifiedFlag = true) public class PersonEntity { @Id @Column(name = "ID_PERSONNE") private Long id;
\u MOD
的值不正确。当我在列表中添加元素时,它将停留在0
而不是1
。但这只发生在特定的情况下
我的实体:
@Entity
@Table(name = "PERSONNE")
@Audited(withModifiedFlag = true)
public class PersonEntity {
@Id
@Column(name = "ID_PERSONNE")
private Long id;
@Column(name = "NAME", length = 100)
private String name;
@Audited( withModifiedFlag = true, modifiedColumnName = "SERVICES_MOD")
private Set<PersonneServiceEntity> services = new HashSet<>(); // Entity with attributs, gettters, setters and envers annotations...
@Audited( withModifiedFlag = true, modifiedColumnName = "OPT_INS_MOD")
private Set<OptinEntity> optIns = new HashSet<>();// Entity with attributs, gettters, setters and envers annotations...
// more fields
// + getters, setteurs, equals, tostring
这就是神奇的发生:当我更新名称
、服务
和选项
时。我的数据库中的值都是正确的,我的实体是正确持久化的,除了一个envers列:OPT_-INS_-MOD
(OPT_-INS_-MOD==0
)。
但是,如果我没有更新名称(行注释),则所有内容都将正确持久化,包括所有\u MOD
值(OPT\u INS\u MOD==1
和服务\u MOD
)。
最后,如果我切换updateSupport(personFromRequest,personFromDB)
和updateServices(personFromRequest,personFromDB)
,在这种情况下OPT\u-INS\u-MOD
是正确的,但不是SERVICES\u-MOD
我的猜测是,当Envers获取所有修改的字段时会出现问题。因为这对我来说毫无意义
有什么想法吗?我使用的是Envers版本4.3.11。最终版
// personFromDB is retrieve via an Id
private void update(PersonEntity personFromRequest, PersonEntity personFromDB) {
personFromDB.setName(personFromRequest.getName());
updateServices(personFromRequest, personFromDB); // add new support to the list
updateOptins(personFromRequest, personFromDB); // add new services to the list
personDao.saveAndFlush(personFromDB);
}