hibernate中inverse=true粗解
来源:互联网 发布:h3c dhcp mac地址绑定 编辑:程序博客网 时间:2024/05/19 01:59
一个Person可以参加多个Event,一个Event有多个Person参加。
映射文件如下:
inverse=true的含义: 由双向关联另一方维护该关联,己方不维护该关联(只能进行查询操作)。在上述代码中,由Person方维护该<many-to-many>关系,示例代码如下(以向Person参与的Event中加入新的Event为例):
要注意的一点:在双向关联的关系中,映射的column(和table)的值要一致(即要用相同的表名和列名),不然设置为inverse="true"的这方将失去这个双向关系,而变成了一个单向关联。
映射文件如下:
<!----><!-- Person.hbm.xml -->
<hibernate-mapping package="events">
<class name="Person" table="person">
<id name="id" column="person_id">
<generator class="native"/>
</id>
<property name="age" length="0"/>
<property name="firstname"/>
<property name="lastname"/>
<set name="events" table="person_event">
<key column="person_id"/>
<many-to-many column="event_id" class="events.Event"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping package="events">
<class name="Person" table="person">
<id name="id" column="person_id">
<generator class="native"/>
</id>
<property name="age" length="0"/>
<property name="firstname"/>
<property name="lastname"/>
<set name="events" table="person_event">
<key column="person_id"/>
<many-to-many column="event_id" class="events.Event"/>
</set>
</class>
</hibernate-mapping>
<!----><!-- Event.hbm.xml -->
<hibernate-mapping>
<class name="events.Event" table="events">
<id name="id" column="event_id">
<generator class="native"/>
</id>
<property name="date" column="events_date" type="timestamp"/>
<property name="title" column="events_title"/>
<set name="participants" table="person_event" inverse="true">
<key column="event_id"/>
<many-to-many column="person_id" class="events.Person"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="events.Event" table="events">
<id name="id" column="event_id">
<generator class="native"/>
</id>
<property name="date" column="events_date" type="timestamp"/>
<property name="title" column="events_title"/>
<set name="participants" table="person_event" inverse="true">
<key column="event_id"/>
<many-to-many column="person_id" class="events.Person"/>
</set>
</class>
</hibernate-mapping>
inverse=true的含义: 由双向关联另一方维护该关联,己方不维护该关联(只能进行查询操作)。在上述代码中,由Person方维护该<many-to-many>关系,示例代码如下(以向Person参与的Event中加入新的Event为例):
<!----> Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Person p = (Person) session.load(Person.class, personId);
Event e = (Event) session.load(Event.class, eventId);
p.getEvents().add(e);//执行该代码时,hibernate会向中间表 person_event中插入person_id和event_id记录,如果换成e.getParticipants().add(p)的话,该代码将不会被执行,即hibernate不会向表person_event中插入记录。
session.getTransaction().commit();
session.beginTransaction();
Person p = (Person) session.load(Person.class, personId);
Event e = (Event) session.load(Event.class, eventId);
p.getEvents().add(e);//执行该代码时,hibernate会向中间表 person_event中插入person_id和event_id记录,如果换成e.getParticipants().add(p)的话,该代码将不会被执行,即hibernate不会向表person_event中插入记录。
session.getTransaction().commit();
要注意的一点:在双向关联的关系中,映射的column(和table)的值要一致(即要用相同的表名和列名),不然设置为inverse="true"的这方将失去这个双向关系,而变成了一个单向关联。
- hibernate中inverse=true粗解
- hibernate中inverse=true粗解
- Hibernate中inverse="true"
- 关于Hibernate中inverse=true
- 关于Hibernate中inverse=true
- Hibernate中“inverse=true”的理解
- Hibernate中inverse="true"的理解
- Hibernate中inverse="true"的理解
- hibernate中inverse=true的使用
- Hibernate中inverse="true"的理解
- Hibernate中inverse="true"的理解
- Hibernate中inverse="true"的理解
- Hibernate中inverse="true"的理解
- hibernate inverse="true"
- hibernate inverse 作用 inverse="true" 作用
- Hibernate inverse 作用 inverse="true" 作用
- 关于Hibernate中inverse=true的转载
- 关于Hibernate中inverse=true的转载
- Struts2_Spring_Mybatis
- Android 内存溢出解决方案(OOM) 整理总结
- 根据输入日期通过位移方式解决包含当月的前几月自定义函数
- android.os.NetworkOnMainThreadException问题
- js事件绑定的几种方式
- hibernate中inverse=true粗解
- 查看用户和默认表空间
- 设置QTP replaytype
- C语言学习_002_C语言概述
- Linux的启动流程(/etc/inittab)
- RedHat linux AS 5下VirtualBox3.1.6增强功能的安装
- mysql dump备份和恢复
- 找出一堆数里面出现次数最多或最多的前N个数字
- socket(AF_INET, SOCK_RAW, IPPROTO_IP)的意思