我有一个带有复合主键的主表 A,包括two列。其中一列是constant(下面代码中的“常量值”)。该表定义如下所示:
@Entity public class Master {
@Id
@Column(name = "SIGNIFICANT_KEY")
private String realKey;
@Id
@Column(name = "CONSTANT_KEY")
private String constantPartKey;
}
我有一个详细表 B,仅使用引用主表 Aone(非常量)列。我想在两个表之间实现通常的 ManyToOne 和 OneToMany 关系。
Question:我如何使用 Hibernate 处理这种情况?
我找到的主参考的唯一解决方案依赖于使用formulas:
@Entity public class Detail {
@ManyToOne
@JoinColumnsOrFormulas(value={
@JoinColumnOrFormula(column=
@JoinColumn(name = "SIGNIFICANT_KEY",
referencedColumnName = "SIGNIFICANT_KEY",
insertable=false, updatable=false, nullable = false)),
@JoinColumnOrFormula(formula=
@JoinFormula(referencedColumnName="CONSTANT_KEY", value="'THE CONSTANT VALUE'"))
})
Master master;
}
现在我看到其他问题:由于我之前在这里报告的 java.lang.ClassCastException 问题,我无法在 OneToMany 关系中使用此字段:https://hibernate.onjira.com/browse/HHH-6811