java - Hibernate 5 给出错误 : must have same number of columns as the referenced primary key

标签 java hibernate jpa hibernate-5.x

我已经从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/

相关文章:

java - sbt 服务器不可用

java - 双向 onetomany 不更新外键

java - MySQL 上的@GeneratedValue 多态抽象父类(super class)

Java-JPA : How can I create a table for each subclass but not for superclass?

java - 实体持久化时如何实现回调?

java - Java 的最佳开源 WSDL/XML 编辑器

java - 如何为 JBCO(Java ByteCode Obfuscator)指定入口点类和 jar 存档?

java - 在 Android Studio 中使用线程崩溃 Java apk

java - 当我第一次检索必须在 @ManyToMany 关系中使用的对象时,为什么会获得此 "detached entity passed to persist"?

java - 行大小太大 (> 8126) hibernate