我已经从hibernate 4迁移到hibernate 5。在hibernate 4中没问题,但在hibernate 5中不起作用。
我遇到异常:
Caused by: org.hibernate.MappingException: Foreign key (FKf6eo63yo42ylh7vl5klap2eum:ProductParent [parent_id])) must have same number of columns as the referenced primary key (ProductParent [parent_id,product_id])
这是我的 hibernate 映射:
@Entity 公共(public)类 ProductParent 实现可序列化 {
@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)
)
你能帮我吗?
最佳答案
解决方案:
添加:
@OneToOne
@JoinColumn(name = PARENT_ID)
private AbstractProduct parent = new AbstractProduct();
关于java - Hibernate 5 给出错误 : must have same number of columns as the referenced primary key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34384139/