日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate的关联映射--一对多、

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate的关联映射--一对多、 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是我
1 單向一對多:
實體類:(課程類)Grade與(學生類)Student的一對多關系
學生類:

public class Student implements java.io.Serializable {// Fieldsprivate Long id;private String name;private Integer age;private Long gradeId;//省略set、get方法 }

bhm.xml:

<hibernate-mapping><class name="com.zx.model.Student" table="student" catalog="hibernate"><id name="id" type="java.lang.Long"><column name="id" /><generator class="native" /></id><property name="name" type="java.lang.String"><column name="name" length="50" /></property><property name="age" type="java.lang.Integer"><column name="age" /></property><property name="gradeId" type="java.lang.Long"><column name="grade_id" /></property></class> </hibernate-mapping>

課程類:

public class Grade implements java.io.Serializable {// Fieldsprivate Long id;private String name; }

xml

<hibernate-mapping><class name="com.zx.model.Grade" table="grade" catalog="hibernate"><id name="id" type="java.lang.Long"><column name="id" /><generator class="native" /></id><property name="name" type="java.lang.String"><column name="name" length="50" /></property><!-- 配置與student一對多的關系--><set name="students" inverse="true" cascade="delete"> <key column="grade_id" /> <one-to-many class="com.zx.model.Student"/> </set> </class> </hibernate-mapping>

測試findById():

public static void main(String[] args) {GradeDAO gradeDAO = new GradeDAO();Grade grade = new Grade();grade.setId(1L);Grade grade2 = gradeDAO.findById(1L); for (Student stu : grade2.getStudents()) {log.debug(stu.getName());}}

關聯查詢不管inverse、cascade為何值時,都會查詢到課程對應得學生集合。插入時只插入一張表,不會級聯。

2 雙向關聯映射
在兩個關聯實體中,同時配置了兩種關聯關系,這是這兩個實體間就形成了雙向關聯映射,查詢數據時互不影響,但是插入、更新、刪除數據就會產生級聯更新的問題。一班來說關系的維護交給多的一方維護,那么就需要在“一”的一方的配置文件中,加入invers=”true”的設置。
Student:

<hibernate-mapping><class name="com.zx.model.Student" table="student" catalog="hibernate">....<!-- <property name="gradeId" type="java.lang.Long"><column name="grade_id" /></property> --><!-- 配置雙向關聯 --><many-to-one name="grade"><column name="grade_id"></column></many-to-one></class> </hibernate-mapping>

Grade:

<hibernate-mapping><class name="com.zx.model.Grade" table="grade" catalog="hibernate">...<!-- 配置與student一對多的關系, **維護關系交給多的一方維護** --><set name="students" inverse="true" cascade="all"> <key column="grade_id" /> <one-to-many class="com.zx.model.Student"/> </set> </class> </hibernate-mapping>

總結

以上是生活随笔為你收集整理的Hibernate的关联映射--一对多、的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。