Java 为什么Hibernate不填充这个外键列
这个问题似乎经常发生,但我找不到一个有效的解决方案。问题是Hibernate将一个外键列的外键保留为空(null)。奇怪的是,我在另一个程序中使用了这两个受影响的表的相同设置,它工作得很好。唯一的区别是我现在添加了另外两个表 我检查了MySQL输出(通过show_sql选项),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
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>`