同一SQL表上的JPA OneToOne关系

Gle*_*yak 2 java mysql hibernate jpa

给定客户端类

public class Client {

 private String firstName;
 private String lastName;
 private Address address;
  //..//
 }
Run Code Online (Sandbox Code Playgroud)

和地址类

public class Address {

private int houseNumber;
private String streetName;
private String city;
private String state;
private String zipCode;
private String country;
//...//
}
Run Code Online (Sandbox Code Playgroud)

我已经创建了地址类,因为它在其他一些类中使用,我不想复制代码.有没有办法,使用JPA,明确地将地址信息显示到我的客户端SQL表而不是创建地址表,并使用主键作为两者之间的链接?

JEY*_*JEY 5

您不需要可以使用Embeddable类型的OneToOne关系.

@Entity
public class Client {
    @Id
    private long id;
    private String firstName;
    private String lastName;
    @Embedded
    private Address address;
}

@Embeddable
public class Address {
    private int houseNumber;
    private String streetName;
    private String city;
    private String state;
    private String zipCode;
    private String country;
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以使用以下列映射表客户端:

first_name, last_name, house_number, street_name, city, state, zip_code, country
Run Code Online (Sandbox Code Playgroud)

并且您可以在其表中具有相同列的任何其他实体上重用该地址.