我如何使用注释在具有非主键列的 2 个实体之间加入?

How do i join between 2 entities with column other than primary key using annotations?

我有 2 个 table 的雇员和地址。每个都有主键 empIdaddressId 是顺序生成的

员工Class:

public class Employee {
    @Id
    @Column(name = "sequence_id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "emp_seq")
    @SequenceGenerator(sequenceName = "emp_seq", allocationSize = 1, name = "emp_seq")
    private Long sequenceId;

    @Column(name = "emp_id")
    private String empId;

    @Column(name = "joiningDate")
    private Date businessDate;

    @OneToOne(mappedBy = "employee", cascade = CascadeType.ALL)
    private Address address;
}

地址Class

public class 地址 {

@Id
@Column(name = "address_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "address_seq")
@SequenceGenerator(sequenceName = "address_seq", allocationSize = 1, name = "address_seq")
private Long addressID;

@Column(name = "street")
private String street;

@OneToOne
@JoinColumn(name = "emp_id")
@JsonIgnore
private Employee employee;

}

我正在使用 JPARepository 来保存这两个实体。这是我的主要 class.

Employee e = Employee.builder().businessDate(new Date())
        .empId("thinkerId").build();
Address a = Address.builder().street("32nd Street")
        .employee(e).build();
e.setAddress(a);
empRepository.save(e);

代码运行成功。但是在我的地址 table 中,emp_Id 列包含主键而不是 emp_id 列。

如何获取 "thinkerId" 作为地址 table 中的值?

谢谢。

Address 实体中,您必须明确指定您所指的列:

public class Address {

    @Id
    @Column(name = "address_id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "address_seq")
    @SequenceGenerator(sequenceName = "address_seq", allocationSize = 1, name = "address_seq")
    private Long addressID;

    @Column(name = "street")
    private String street;

    @OneToOne
    @JoinColumn(name = "emp_id", referencedColumnName = "emp_id")
    @JsonIgnore
    private Employee employee;
}