Hibernate关系映射

关系映射:
对象之间的关系
一对一(单向和双向)
Annontation配置:
@Id--定义ID
@GeneratedValue
@JoinColumn(name="userID"):Userid在数据库中的字段名字,这个必加


xml双向配置:
<many-to-one name="user" column="userid" unique="true"></many-to-one>
unique="true":userid必须唯一
<one-to-one name="product" property-ref="user"></one-to-one>

多对一(单向)
Annontation配置:
@ManyToOne
@JoinColumn(name="groupId")



xml双向配置(单向):
<many-to-one name="group" column="groupId"></many-to-one>


一对多Annontation配置(单向):
@OneToMany
@JoinColumn(name="aa")


一对多xml配置(单向):
<set name="news">//属性名
<key column="newsid"></key>重命名
<one-to-many class="com.secn.user.News"/>
</set>

一对多的Annontation双向
@OneToMany(mappedBy="newsSort")
@JoinColumn(name="aa")
@ManyToOne
@JoinColumn(name="aa")

一对多的xml双向
<set name="news">
<key column="newsid"></key>
<one-to-many class="com.secn.user.News"/>
</set>
<many-to-one name="newsSort" column="news_id"></many-to-one>




多对多(单向)
private Set<News> newss  = new HashSet<News>();
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)

<set name="news" table="t_a">中间表名
<key column="newssort_id"></key>上一张表的主键
<many-to-many class="com.secn.user.News" column="news_id"/>下一张表的主键
</set>

多对多(双向)
private Set<News> newss  = new HashSet<News>();
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)

private Set<News> newss  = new HashSet<News>();
@ManyToMany(mappedBy="newss")



<set name="news" table="t_a">中间表名
<key column="newssort_id"></key>上一张表的主键
<many-to-many class="com.secn.user.News" column="news_id"/>下一张表的主键
</set>

<set name="news" table="t_a">中间表名
<key column="news_id"></key>上一张表的主键
<many-to-many class="com.secn.user.News" column="newssort_id"/>下一张表的主键
</set>



来源:http://www.secn.com.cn

你可能感兴趣的:(Hibernate)