这是 2 个实体的代码,machine
和device
。
@Audited
@Entity(name = "device")
@Table(name = "device")
public class Device {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "machineCode", referencedColumnName = "machineCode")
private Machine machine;
}
@Audited
@Entity(name = "machine")
@Table(name = "machine")
public class Machine {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String machineCode;
}
现在,当我保存device
实体时。machineCode
列(在device
的审计表中(从计算机的域对象中获取id
的值,而不是相应的machineCode
。 我不确定代码是否有任何问题。提前谢谢。
PS - 还有其他混合实体附加到machine
实体。因此,不需要添加@OneToMany
,或者我应该说,这将是一个开销。
编辑1:如果我说得不够清楚,这个问题是关于envers
审计框架的。
您需要确保引用的实体(机器(实现可序列化。
查看以下链接以获取进一步说明:-
https://thorben-janssen.com/hibernate-提示-模型关联-不要引用-主要键列/