Hibernate 5 выдает ошибку: должно быть такое же количество столбцов, как указанный первичный ключ

Я перешел из спящего режима 4 в спящий режим 5. Это нормально в спящем режиме 4, но не работает в спящем режиме 5.

Я получаю исключение:

Вызвано: org.hibernate.MappingException: внешний ключ (FKf6eo63yo42ylh7vl5klap2eum:ProductParent [parent_id])) должен иметь такое же количество столбцов, как и указанный первичный ключ (ProductParent [parent_id,product_id])

Это мое сопоставление гибернации:

Открытый класс @Entity ProductParent реализует Serializable {

@Id
@OneToOne()
@JoinColumn(name = "product_id")
private AbstractProduct product = new AbstractProduct();

@ManyToMany(cascade = ALL, fetch = EAGER)
@JoinTable(name = PRODUCTPARENT, joinColumns = { @JoinColumn(name = "product_id") }, inverseJoinColumns = { @JoinColumn(name = "parent_id") })
private Set<ProductParent> parents = new HashSet<>();

и структура таблицы:

CREATE TABLE productparent (  
  product_id bigint NOT NULL,  
  parent_id bigint,  
  CONSTRAINT fk_parent_id FOREIGN KEY (parent_id) REFERENCES abstractproduct (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION,  
  CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES abstractproduct (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION,  
  CONSTRAINT product_id_parent_id_should_be_unique UNIQUE (product_id, parent_id)  
)

Не могли бы вы мне помочь?


person user657009    schedule 20.12.2015    source источник


Ответы (1)


Решение:

Добавить:

@OneToOne
@JoinColumn(name = PARENT_ID)
private AbstractProduct parent = new AbstractProduct();
person user657009    schedule 20.12.2015