Как решить сообщение об ошибке, говорящее: должно иметь то же количество столбцов, что и указанный первичный ключ - PullRequest
0 голосов
/ 29 марта 2019

У меня есть несколько классов моделей, и я считаю, что два из них имеют неправильную аннотацию.Тем не менее, я не знаю, как сделать это правильно, хотя я уже искал это.

Вот класс модели - я хочу добиться, чтобы в одном магазине могло быть много товаров

Магазин:

@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])

Возможно, кто-то может помочь мне решить эту проблему.

Заранее спасибо

1 Ответ

0 голосов
/ 29 марта 2019

Укажите атрибуты идентификатора продукта и идентификатора магазина, которые являются первичными ключами для сущностей.

Изменить конфигурацию объекта магазина, как показано ниже.

@OneToMany(mappedBy = "productId")
private List<Product> products;
...