【发布时间】:2019-07-13 01:05:05
【问题描述】:
我遇到了 Envers 的问题。我有两个实体,CITY 和 CITY_I18N。 通过 CITY 实体的“CODE”列,它们之间存在“一对多”关系。 当我尝试保存 CityI18N 实体时,操作成功结束,但 CITY_I18N_AUD 表中的记录包含错误值,Envers 写入 CITY 实体的“ID”列,而不是真正的外键,“CODE”列。
我该如何解决这个问题?
提前致谢。
@Entity
@Audited
public class City {
@Id
@SequenceGenerator(name = "CITY_ID_GENERATOR", sequenceName = "SEQ_CITY")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CITY_ID_GENERATOR")
private Long ID;
@Column(name = "CODE")
private String code;
@OneToMany(mappedBy = "city", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@Fetch(value = FetchMode.SUBSELECT)
@NotAudited
private List<CityI18n> cityI18ns;
}
@Entity
@Table(name="CITY_I18N")
@Audited
public class CityI18n {
@Id
@SequenceGenerator(name="CITY_I18N_ID_GENERATOR", sequenceName="SEQ_APPLICATION")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CITY_I18N_ID_GENERATOR")
private Long ID;
private String name;
@ManyToOne
@JoinColumn(name = "LANGUAGE_CODE", referencedColumnName="CODE")
private Language language;
@ManyToOne
@JoinColumn(name = "CITY_CODE", referencedColumnName="CODE")
private City city;
}
【问题讨论】:
-
我只能在这里说的是,这可能是不正确处理
referencedColumnName的错误,因为这不是本示例中的标准。但是我之前没有看到任何类似的报告,所以我认为它不会在未来的某些版本中得到修复。 -
嗨 Adam,其实在 stackowerflow 上有一个类似的帖子,stackoverflow.com/questions/15340382/… 还创建了一个 jira 记录,hibernate.onjira.com/browse/HHH-8066
标签: java hibernate hibernate-envers