Мне действительно интересно, как полезно иметь постоянное значение столбца в базе данных, но в любом случае ...
Что я хотел бы сделать, это только сопоставить непостоянный столбец как идентификатор и сделать постоянный столбец регулярным столбцом с постоянным значением:
@Entity
public class Strange {
@Id
private Long id;
@Column
private long constant = 345; // the constant that you want in your database
@OneToMany(mappedBy = "strange")
private Set<Detail> details;
...
// no setter for constant!
}
@Entity
public class Detail {
...
@ManyToOne
@JoinColumn(name = "strange_id")
private Strange strange;
}
Если другие сущности ссылаются на ту же самую Странную сущность, используя ее полный составной ключ, то просто выполните следующее:
@Entity
public class Strange {
@Id
@Column(name = "strange_id")
private Long id;
@Id
private long constant = 345; // the constant that you want in your database
@OneToMany(mappedBy = "strange")
private Set<Detail> details;
...
// no setter for constant!
}
@Entity
public class Detail {
...
@ManyToOne
@JoinColumn(name = "strange_id", referencedColumnName = "strange_id")
private Strange strange;
}
Вы можете ссылаться на другие объекты, используя что-то, кроме их PK. Еще один уникальный столбец тоже в порядке. А так как странный_ид уникален, он отвечает всем требованиям. В этом случае атрибут referencedColumnName
должен использоваться для указания имени столбца, на который есть ссылка.