您的位置:首页 > 其它

Hibernate之一对多双向外键关联

2017-08-30 16:11 267 查看

(一)基于注解的配置方式:双向(Bidirectional)(多方为主体端)


在EJB3规范中多对一这端几乎总是双向关联中的主体(owner)端, 而一对多这端的关联注解为@OneToMany( mappedBy=... )
@Entity
public class Troop {
@OneToMany(mappedBy="troop")
public Set<Soldier> getSoldiers() {
...
}

@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk")
public Troop getTroop() {
...
}

Troop 通过troop 属性和Soldier建立了一对多的双向关联.
在mappedBy端不必也不能再定义任何物理映射
(二)基于xml的配置方式(多对一和一对多的配置中column属性的值要一样)
Group.hbm.xml的配置:
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.bjsxt.hibernate.Group" table="t_group">
<id name="id">
<generator class="native"></generator>
</id>

<property name="name"></property>
<set name="users">
<key column="groupId"></key>   //column的属性值要与user的一致
<one-to-many class="com.bjsxt.hibernate.User"/>
</set>

    </class>

</hibernate-mapping>

User.hbm.xml的配置:
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.bjsxt.hibernate.User" table="t_user">
<id name="id">
<generator class="native"></generator>
</id>

<property name="name"></property>
<many-to-one name="group" column="groupId"></many-to-one> //column的属性值要与Group中的一致

    </class>

</hibernate-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: