Hibernate 中不需要的审计和意外的审计插入

问题描述 投票:0回答:1

我有几个相关的实体,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();

这导致了

  1. 插入Person_Preference
  2. 插入Z_Person_Preference(审核表)
  3. 插入Z_Person(审核表)

我不知道为什么会发生向 Z_Person 审计表的插入。 Person 实体没有更改,并且该附加插入只是 person 的最后合法审核记录的副本。

如何停止插入数字 3?

java hibernate
1个回答
0
投票

解决方案是将 @NotAudited 添加到 PersonPreference.person 字段。

© www.soinside.com 2019 - 2024. All rights reserved.