【问题标题】:creating tables using JPA使用 JPA 创建表
【发布时间】:2019-07-09 09:57:27
【问题描述】:

我正在使用 Spring boot 和 JPA 创建两个表:

公寓桌: id、名称、address_id、网站

地址表: id, street_num, 街道, 城市, .....

address_id应该是外键,指向地址表中的id。

我的代码无法正常工作。这是我的两个实体类:

Apartment.java:

@Entity
public class Apartment {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String name;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinTable(name = "address",
            joinColumns = @JoinColumn(name = "apt_id"))
    private Address address;

    private String website;
    //getters and setters

地址.java:

@Entity
public class Address {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private Integer apt_id;

    private String streetNum;

    private String street;

    private String city;

    private String state;

    private String zipCode;
    //getters and setters

我得到的是地址表中名为 address_id 的额外列......而公寓表中缺少 address_id ......

非常感谢!

【问题讨论】:

    标签: mysql spring-boot jpa spring-boot-test


    【解决方案1】:

    休眠与外键关联的一对一映射

    在这种关联中,在所有者实体中创建了一个外键列 连接列是使用 @JoinColumn 注释声明的,它看起来像 @Column 注释。它还有一个名为referencedColumnName 的参数。此参数声明目标实体中将用于连接的列。

    用这个替换你的公寓类:

    @Entity
    public class Apartment {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    
    private String name;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "apt_id"))
    private Address address;
    
    private String website;
    //getters and setters
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多