首页 > 解决方案 > jpa休眠关联多对一错误

问题描述

这是我的扩展 BaseClass 的产品类,我在

 @JoinColumn(name = "fk_supplier",referencedColumnName = "supplier_id")
 private Supplier supplier;

并且错误是“多对一”属性类型不应该是“供应商”

@Table
@Data
public class Product extends BaseEntity {
    @ManyToMany
    private List<Customer> customers = new ArrayList<>();
    @ManyToOne
    @JoinColumn(name = "fk_supplier",referencedColumnName = "supplier_id")
    private Supplier supplier;

}

这是我的供应商类

@Table
@Data
public class Supplier extends BaseEntity {
    @Column
    private boolean active;
    @Column
    private Date foundationDate;
    //Enum type to String type in mysql
    @Column
    @Enumerated(EnumType.STRING)
    private Type type;


    @OneToMany(targetEntity = Product.class)
    private List<Product> products = new ArrayList<>();
}

标签: javaspring-boothibernatejpa

解决方案


supplier_id列是在哪个实体下定义的?,表示在提供的Supplier实体片段中不存在此类字段。我希望基本实体只有通用的列,并且适用于您将使用的每个实体。因此,如果您指定,请referencedColumnName确保它与您在定义中的内容一致。默认情况下,它将是被引用实体的主键,这里是Supplier表的主键。

请尝试这样做,它可能会解决我认为的问题

@JoinColumn(name = "fk_supplier")
private Supplier supplier;

推荐阅读