JPA:将 OneToOne Long 值(不是实体)映射到另一个不是主键的表列
Posted
技术标签:
【中文标题】JPA:将 OneToOne Long 值(不是实体)映射到另一个不是主键的表列【英文标题】:JPA : Mapping a OneToOne Long value (not an entity) to another tables column which is not a primary key 【发布时间】:2019-06-07 08:37:09 【问题描述】:所以我有一个实体,它与表中的现有数据库具有一对一的关系。但是,我希望它映射到的字段不是主键。 我怎样才能做到这一点?我要在下面添加什么?
@Entity
public class MyEntity
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne
private Long otherTableField;
【问题讨论】:
如果加入列值 = PK of myEntity 那么你可以试试@SecondaryTable
。
【参考方案1】:
您需要用referencedColumnName
明确指定@JoinColumn
:
@OneToOne
@JoinColumn(name = "other_table_non_primary_id", referencedColumnName= "non_primary_id"
private OtherTable otherTableField;
此外,类型必须是 OtherTable
而不是 Long。
【讨论】:
我试图避免映射出数据库中已经存在的另一个表。不能只将 Id 映射为 Long 吗? 这不是 JPA 的工作方式。您可以使用 long 但它只是一个@Basic 列以上是关于JPA:将 OneToOne Long 值(不是实体)映射到另一个不是主键的表列的主要内容,如果未能解决你的问题,请参考以下文章
将 OneToOne/ManyToOne 与 JPA 和多个数据源一起使用时出错