I have a master table A with a composite primary key, consisting of two columns. One of these columns is a constant ("THE CONSTANT VALUE" in the code below). This table definition looks like the following:
@Entity public class Master {
@Id
@Column(name = "SIGNIFICANT_KEY")
private String realKey;
@Id
@Column(name = "CONSTANT_KEY")
private String constantPartKey;
}
I have a detail table B, referencing master table A using only one (non-constant) column. I want to implement usual ManyToOne and OneToMany relations between the two tables.
Question: How can I handle this situation with Hibernate?
The only solution for master reference I found relies on using 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;
}
Now I see other problem: I cannot use this field in OneToMany relation due to the java.lang.ClassCastException problem I've reported here earlier: https://hibernate.onjira.com/browse/HHH-6811