无法添加或更新子行:外键约束失败 - 一对多关系 - Hibernate

时间:2017-08-16 21:55:21

标签: java spring hibernate

我正在使用hibernate处理一对多关系。

profesor.java

FileListCopy

我的教授表已经与类表关系多对多。现在我试图将它与post表连接为一对多。

我的帖子模型如下:

post.java

   @Entity
    public class Profesor {

         @Id
         @GeneratedValue(strategy = GenerationType.TABLE)
         private Long id;

        @ManyToMany(mappedBy = "profesors", fetch = FetchType.EAGER, cascade = { CascadeType.MERGE, CascadeType.PERSIST })
        private List<Classes> classes;

        @OneToMany(mappedBy="profesor", fetch = FetchType.EAGER, cascade = { CascadeType.MERGE, CascadeType.PERSIST })

        @Fetch(value = FetchMode.SUBSELECT)
        private List<Post> post;

    }

以下是我的表格在数据库中的显示方式。

Post table in database

我收到以下错误:

@Entity
public class Post {

  @Id 
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "id", unique = true, nullable = false)
  private long id;


   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn (name="profesor_id",referencedColumnName="id",nullable=false,unique=true)
   private Profesor profesor;
}

我做错了什么?

SOLUTION:

首先我创建了没有profesor_id的post表。当我开始在表之间创建关系时,我添加了profesor_id,然后将profesor_id设置为null。当我清理桌子时,我可以正常运行我的应用程序。

1 个答案:

答案 0 :(得分:1)

很明显你违反了一些限制,我会说你试图删除一个已经链接到post的proffesor,尝试删除nullable = false

 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn (name="profesor_id",referencedColumnName="id",unique=true)
 private Profesor profesor;