java - JPA : Mapping a OneToOne Long value (not an entity) to another tables column which is not a primary key

标签 java jpa orm spring-data-jpa

所以我有一个实体,它与表中的现有数据库具有一对一的关系。然而,我希望它映射到的字段不是主键。 我怎样才能实现这个目标?我应该在下面添加什么?

@Entity
public class MyEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToOne
    private Long otherTableField;
}

最佳答案

您需要使用 referencedColumnName 显式指定 @JoinColumn:

@OneToOne
@JoinColumn(name = "other_table_non_primary_id", referencedColumnName= "non_primary_id"
private OtherTable otherTableField;

此外,类型必须是 OtherTable 而不是 Long。

关于java - JPA : Mapping a OneToOne Long value (not an entity) to another tables column which is not a primary key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490806/

相关文章:

java - JPQL:查询具有使用组合键建模的多对多关系的实体

java - 为什么我的中间存储库接口(interface)从 Spring Data JPA 1.4.x 升级到更新版本(例如 1.7.1)后会出现问题?

java - 使用 Hibernate 在 Postgres 中使用 @EmbeddedId 和 @ElementCollection 持久化实体时出现问题

java - 如何有效编写 JPA 命名查询

java - 使用 SWIG 从 Java 访问结构中的指针数组

java - 为抽象类创建对象

java - 如何修复 Selenium Webdriver 异常 ElementNotVisibleException?

javascript - 建立关联时,哪些方法/mixin sequelize 添加到模型中?

java - 免注解spring数据解决方案

java - 无法从 Java SDK 为 Fabric 中的 BYFN 执行调用事务