Hibernate为什么不填充此外键列

克雷尔

这个问题似乎经常发生,但是我找不到适合我的案例的解决方案。问题在于,Hibernate将一个外键列的外键留空(空)。奇怪的是,我在另一个程序中使用了这两个受影响的表的相同设置,并且工作正常。唯一的不同是,我现在添加了另外两个表。

我检查了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;

孩子:

public class Tag {

@Id  
@GeneratedValue  
private Integer id; 

@Index(name = "tag")
@Column
private String tag;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="page_id")
private Page pageId;

保存方式(必须保存或更新):

public static void save(SessionFactory sessionFactory, Page page) {
    Session session = sessionFactory.openSession();
    session.beginTransaction();     
    session.saveOrUpdate(page);
    session.getTransaction().commit();
    session.close();
}

每个建议都受到高度赞赏!

凯文·鲍索克斯(Kevin Bowersox)

您在管理协会的双方吗?意思是您将in添加TagSet<Tag>inPage并将Page字段设置Tag

Page使用该save方法之前您应该按照以下方式管理关系:

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>`

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么此外键约束格式不正确?

为什么MySQL不允许此外键?

VALIDATE CONSTRAINT为什么找不到此外键冲突?

为什么此外壳管道退出?

为什么Hibernate插入带有外键的父行而不插入子行?

为什么这个形状不填充()?

为什么不填充Formik的“ touched”属性?

为什么当textarea不填充时,不更改样式?

为什么Spring JPA双向OneToMany和ManyToOne不更新外键列?

我似乎无法弄清楚为什么datagridview没有填充。(此外,在跟踪时出现了一个奇怪的错误)

为什么我的输入字段填充了生成焦点事件的键?

jQuery作用域-为什么不填充我的数组?

为什么不选择框填充?菜鸟 AJAX 问题

为什么url.Parse不填充URL.RawPath?

为什么不填充此HTTP请求的“响应”字段?

为什么在我发布POST时不填充我的DropDownListFor?

为什么按钮不拉伸以填充网格单元?

为什么我的图例不尊重父字段集的填充?

为什么Backbone的collection create()方法不填充ID?

为什么我的“flex”div 不遵守填充权?

为什么我的填充函数不返回任何值?

在表视图单元格中显示列数据-为什么不创建和填充我的表单元格?

遍历对象方法时,为什么for(... in ...)循环不返回键

为什么OrderedDict键视图比较不区分顺序的?

为什么不建议在Vim中使用箭头键

为什么会出现外键不匹配?

为什么不添加外键约束groovy / grails

为什么默认情况下Hibernate不设置@DynamicInsert

为什么不建议使用org.hibernate.cache.Cache?