老師和學生,最典型的多對多關聯,
Teacher和Student,所謂單向意思就是說,老師知道自己的教的是哪些學生而學生不知道是哪些老師教。也可以這麼說,在查詢的時候,通過老師可以級聯查詢出學生,但是通過學生不可以級聯查詢出老師!
而多對多最麻煩的是怎麼自定義我們中間表的,表名和列名,這個是重要的!
Annotations配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<code>@Entity</code>
<code>@Table</code><code>(name=</code><code>"t_teacher"</code><code>)</code>
<code>publicclass Teacher {</code>
<code> </code><code>private</code> <code>Integer id;</code>
<code> </code><code>private</code> <code>String name;</code>
<code> </code><code>private</code> <code>Set<Student> students=</code><code>new</code> <code>HashSet<Student>();</code><code>//set不允許重複,最适合資料庫模型</code>
<code> </code><code>@Id</code>
<code> </code><code>@GeneratedValue</code>
<code> </code><code>public</code> <code>Integer getId() {</code>
<code> </code><code>returnid;</code>
<code> </code><code>}</code>
<code> </code><code>publicvoid setId(Integerid) {</code>
<code> </code><code>this</code><code>.id = id;</code>
<code> </code><code>@Column</code><code>(name=</code><code>"t_name"</code><code>)</code>
<code> </code><code>public</code> <code>String getName() {</code>
<code> </code><code>returnname;</code>
<code> </code><code>publicvoid setName(Stringname) {</code>
<code> </code><code>this</code><code>.name = name;</code>
<code> </code><code>@ManyToMany</code>
<code> </code><code>@JoinTable</code><code>(name=</code><code>"t_s_two"</code><code>,</code><code>//自定義表名</code>
<code> </code><code>joinColumns={</code><code>@JoinColumn</code><code>(name=</code><code>"teacher_id"</code><code>)},</code><code>//自定義列名</code>
<code> </code><code>inverseJoinColumns={</code><code>@JoinColumn</code><code>(name=</code><code>"student_id"</code><code>)})</code><code>//反轉,和Teacher對應的那個表的列名,也是自定義</code>
<code> </code><code>public</code> <code>Set<Student>getStudents() {</code>
<code> </code><code>returnstudents;</code>
<code> </code><code>publicvoidsetStudents(Set<Student> students) {</code>
<code> </code><code>this</code><code>.students = students;</code>
<code>}</code>
<code>@Table</code><code>(name=</code><code>"t_student"</code><code>)</code>
<code>publicclass Student {</code>
<code> </code><code>private</code> <code>Integer age;</code>
<code> </code><code>@Column</code><code>(name=</code><code>"s_name"</code><code>)</code>
<code> </code><code>@Column</code><code>(name=</code><code>"s_age"</code><code>)</code>
<code> </code><code>public</code> <code>Integer getAge() {</code>
<code> </code><code>returnage;</code>
<code> </code><code>publicvoid setAge(Integerage) {</code>
<code> </code><code>this</code><code>.age = age;</code>
XML配置
<code> </code><code>private</code> <code>Set<Student> students=newHashSet<Student>();</code><code>//set不允許重複,最适合資料庫模型</code>
<code> </code><code>this</code><code>.id = id;</code>
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code><code>?></code>
<code><!DOCTYPE hibernate-mapping PUBLIC </code>
<code> </code><code>"-//Hibernate/Hibernate Mapping DTD 3.0//EN"</code>
<code> </code><code>"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"></code>
<code><</code><code>hibernate-mapping</code> <code>package</code><code>=</code><code>"csg.hibernate.entity"</code><code>></code>
<code> </code><code><</code><code>class</code> <code>name</code><code>=</code><code>"Teacher"</code> <code>table</code><code>=</code><code>"t_teacher"</code><code>></code>
<code> </code><code><</code><code>id</code> <code>name</code><code>=</code><code>"id"</code><code>></code>
<code> </code><code><</code><code>column</code> <code>name</code><code>=</code><code>"id"</code><code>/></code>
<code> </code><code><</code><code>generator</code> <code>class</code><code>=</code><code>"native"</code> <code>/></code>
<code> </code><code></</code><code>id</code><code>></code>
<code> </code><code><</code><code>property</code> <code>name</code><code>=</code><code>"name"</code> <code>/></code>
<code> </code><code><</code><code>set</code> <code>name</code><code>=</code><code>"students"</code> <code>table</code><code>=</code><code>"t_s_two"</code><code>><!—-自定義表名--></code>
<code> </code><code><</code><code>key</code> <code>column</code><code>=</code><code>"teacher_id"</code><code>/><!—自定義列名--></code>
<code> </code><code><</code><code>many-to-many</code> <code>class</code><code>=</code><code>"csg.hibernate.entity.Student"</code> <code>column</code><code>=</code><code>"student_id"</code><code>/><!—自定義列名--></code>
<code> </code><code></</code><code>set</code><code>></code>
<code> </code><code></</code><code>class</code><code>></code>
<code></</code><code>hibernate-mapping</code><code>></code>
<code> </code><code><</code><code>class</code> <code>name</code><code>=</code><code>"Student"</code> <code>table</code><code>=</code><code>"t_student"</code><code>></code>
<code> </code><code><</code><code>property</code> <code>name</code><code>=</code><code>"age"</code> <code>/></code>
以上就是XML的many-to-many(單向)的配置方法
本文轉自 小夜的傳說 51CTO部落格,原文連結:http://blog.51cto.com/1936625305/1568903,如需轉載請自行聯系原作者