我有一个包含两列的静态表:statusCode、statusName。该表仅包含 7 条记录。以及一个与状态具有一对一关系的表候选。
它看起来或多或少像这样:
@Entity
public class Status {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
String statusName;
String statusCode;
// getters and setters
}
还有
@Entity
public class Candidate {
// properties, getters and setters
@OneToOne
Status status;
}
问题是,每次我创建一个新的 Candidate 时,我还需要在我的 Status 表中创建一条新记录,这样我将存储大量冗余数据(只有 7 种可能的数据)状态)。 我只想在 Candidate 实体中设置状态 ID,以便稍后能够接收状态详细信息,从而避免在 Status 表中创建不必要的记录。
谢谢
最佳答案
首先你应该将 OneToOne 更改为 ManyToOne
@Entity
public class Candidate{
// properties, getters and setters
@ManyToOne
Status status;
}
创建新候选人时必须获取状态并分配它。
无论是
Status status = em.find(Status.class, id);
这将加载整个状态,或者如果您只想设置外键并且不需要状态对象
Status status = em.getReference(Status.class, id);
然后您可以将检索到的状态分配给候选人。
em 是 EntityManager
关于java - 如何在 Hibernate 中将 @OneToOne 关系映射到静态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59928847/