我有几个相关的实体,Person 和 PersonPreference:
public class PersonPreference {
@Id
private Long id;
@EntityId(value = Person.class, defer = false)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PERSON", nullable = false, insertable = true, updatable = false)
@SensitiveData
private Person person;
}
public class Person {
@Id
@GeneratedValue(generator = MY_SEQUENCE_GENERATOR_NAME, strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = MY_SEQUENCE_GENERATOR_NAME, sequenceName = MY_SEQUENCE_GENERATOR_NAME, allocationSize = 1)
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "person")
private List<PersonPreference> personPreferences = new ArrayList<>(0);
}
我正在使用恩弗斯。 我的用例是 Person 已经存在于数据库中,并且我正在保留 PersonPreference。
Patient existingPerson = EM.find(Person.class, personId);
personPreference.setPerson(existingPerson);
EM.persist(personPreference);
EM.flush();
这导致了
我不知道为什么会发生向 Z_Person 审计表的插入。 Person 实体没有更改,并且该附加插入只是 person 的最后合法审核记录的副本。
如何停止插入数字 3?
解决方案是将 @NotAudited 添加到 PersonPreference.person 字段。