如何解决错误消息说:必须具有与引用的主键相同的列数

问题描述 投票:0回答:1

我有一些模型类,我相信其中两个有错误的注释。但是,虽然我一直在寻找它,但我不知道该怎么做。

这是模型类 - 我希望实现一个商店可以有很多产品

店:

@Entity
@Table
    public class Shop extends AbstractBaseDomain<Long> {

    @Id
    @GeneratedValue
    private long shop_id;

    @NotBlank
    @Size(min = 2, max = 50)
    @Column(name ="name")
    private String name;

    @NotNull
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name ="address")
    private Address address;

    @OneToMany(mappedBy = "product_id")
    private List<Product> products;
}

产品:

@Entity
@Table
public class Product extends AbstractBaseDomain<Long> {

    @Id
    @GeneratedValue
    private long product_id;

    @NotBlank
    @Size(min = 2, max = 50)
    @Column(name ="productname")
    private String productname;

    @NotBlank
    @Size(min = 2, max = 50)
    @Column(name ="manufacturer")
    private String manufacturer;

    @NotNull
    @Column(name ="currentPrice")
    private BigDecimal currentPrice;

    @ManyToOne
    private Order order;
}

HistoryPrice

@Entity
@Table
public class HistoryPrice extends AbstractBaseDomain<Long> {

    @NotNull
    @JoinColumn(name ="product_id")
    private Product product;

    @NotNull
    @Column(name ="price")
    private BigDecimal price;

    @NotNull
    @Column(name ="[from]")
    private LocalDateTime from;

当我尝试

Shop shop = shopService.findShopById(id);

我总是收到错误消息,说SQLGrammarException。

enter image description here现在,我在我的模型类中实现了shop_id和product_id,现在我收到另一条错误消息,说:

product [product_id]))必须与引用的主键具有相同的列数(shop [shop_id,id])

也许有人可以帮我解决这个问题。

提前致谢

hibernate badsqlgrammarexception
1个回答
0
投票

请定义产品ID和商店ID属性,它们是实体的主键。

更改商店实体配置如下。

@OneToMany(mappedBy = "productId")
private List<Product> products;
© www.soinside.com 2019 - 2024. All rights reserved.