我有2张桌子
表a-id,b_id,名称
表b-ID,名称
当我必须创建POJO实体时,我希望将b_id作为列以及外键来从b获取值。
答案 0 :(得分:0)
没问题。但是您必须在b_id列或关系中将该列标记为只读。
示例1只读的列:
public class A {
@Column(insertable = false, updateable = false)
private Integer bId;
@ManyToOne
private B b;
}
示例2只读关系:
public class A {
private Integer bId;
@JoinColumn(name="b_id", insertable = false, updatable = false)
@ManyToOne
private B b;
}
答案 1 :(得分:0)
最干净的方法是仅映射外键并访问B实例上的ID:
A a = em.find(A.class, 1L);
Long bid = a.getB().getBid();
这应该不会引起任何性能问题,但是在特定情况下会引起性能问题-有可用的特定解决方案。
其他方法也是可行的,但是最终您将在两处编码单个数据,并使它们保持同步将是问题和细微错误的源头。
答案 2 :(得分:0)
对@JoinColumn
字段使用@Column
注释而不是Mapped
。进一步了解JoinColumn
at this link