hibernate inverse属性的作用

Posted 杨荣林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate inverse属性的作用相关的知识,希望对你有一定的参考价值。

hibernate inverse属性的作用 hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的。 inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联 由对方控制。 见例子: 一个Parent有多个Child,一个Child只能有一个Parent。 package com.xian; public class Child { private Long id; private String name; private Parent parent; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Parent getParent() { return parent; } public void setParent(Parent parent) { this.parent = parent; } } package com.xian; import java.util.HashSet; import java.util.Set; public class Parent { private Long id; private String name; private Set children = new HashSet(); public Long getId() { return id; } private void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set getChildren() { return children; } public void setChildren(Set children) { this.children = children; } } Parent p = new Parent(); p.setName("parent"); Child c = (Child) session.load(Child.class, 4l); //原child表中已存在id=4的child p.getChildren().add(p); // 我希望用parent端来修改关联,即将id=4的child的外键变为现在这个parent的主键值 session.save(p); //这里保存parent,同时希望关联也得到修改 但是我们发现parent确实保存了,而child的外键还是原值,没有关联到我们现在的外键 原因就是我们将关联的控制方交给了child端,这样一来parent就不能够控制关联了。 Parent p = new Parent(); p.setName("parent"); Child c = (Child) session.load(Child.class, 4l); c.setParent(p); //这样由child端修改关联就ok了 session.save(p);

以上是关于hibernate inverse属性的作用的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate inverse和cascade的作用和区别

Hibernate中的inverse

Hibernate inverse属性与cascade属性

Hibernate 配置文件属性之 级联操作cascade 性能优化inverse

hibernate中inverse的用法

一口一口吃掉Hibernate——Hibernate中inverse的用法