Java 为什么Hibernate不填充这个外键列

Java 为什么Hibernate不填充这个外键列,java,mysql,hibernate,orm,Java,Mysql,Hibernate,Orm,这个问题似乎经常发生,但我找不到一个有效的解决方案。问题是Hibernate将一个外键列的外键保留为空(null)。奇怪的是,我在另一个程序中使用了这两个受影响的表的相同设置,它工作得很好。唯一的区别是我现在添加了另外两个表 我检查了MySQL输出(通过show_sql选项),Hibernate在子表之前插入父表。所以钥匙应该在那里 家长: public class Page { @Id @GeneratedValue @Column(name="page_id") private I

这个问题似乎经常发生,但我找不到一个有效的解决方案。问题是Hibernate将一个外键列的外键保留为空(null)。奇怪的是,我在另一个程序中使用了这两个受影响的表的相同设置,它工作得很好。唯一的区别是我现在添加了另外两个表

我检查了MySQL输出(通过show_sql选项),Hibernate在子表之前插入父表。所以钥匙应该在那里

家长:

public class Page {

@Id  
@GeneratedValue  
@Column(name="page_id")
private Integer id; 

//****** THIS IS THE CHILD
@OneToMany(orphanRemoval=true, mappedBy="pageId", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Tag> tag = new HashSet<Tag>();


//****** THESE ARE THE NEW TABLES
@OneToOne(cascade=CascadeType.ALL)
private Video video;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="creator_id")
private Creator creator;
如何保存(需要保存或更新):


非常感谢您的每一个建议

您是否管理协会的双方?这意味着您将
标记添加到
页面
中的
集合
,并在
标记
上设置
页面
字段

在将
页面
传递到
保存
方法之前,您应该按照以下方式管理关系:

Page page = new Page();
Tag tag = new Tag();

//managing the both sides of the relationship
tag.setPage(page); //Setting Tags page field
page.getTags().add(tag); //Adding tag to the `Set<Tag>`
Page Page=newpage();
标签=新标签();
//管理关系的双方
tag.setPage(第页)//设置标签页字段
page.getTags().add(标记)//将标记添加到`集合`

Damn:D。。。多谢各位@很高兴我能帮忙!一开始我也很挣扎。
public static void save(SessionFactory sessionFactory, Page page) {
    Session session = sessionFactory.openSession();
    session.beginTransaction();     
    session.saveOrUpdate(page);
    session.getTransaction().commit();
    session.close();
}
Page page = new Page();
Tag tag = new Tag();

//managing the both sides of the relationship
tag.setPage(page); //Setting Tags page field
page.getTags().add(tag); //Adding tag to the `Set<Tag>`