【问题标题】:JPA : Mapping a OneToOne Long value (not an entity) to another tables column which is not a primary keyJPA:将 OneToOne Long 值(不是实体)映射到另一个不是主键的表列
【发布时间】: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

标签: java jpa orm spring-data-jpa


【解决方案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 列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多