麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

Hibernate注解表關聯

2024-07-21 02:52:09
字體:
來源:轉載
供稿:網友

記錄Hibernate注解在表關聯時的應用 總共有三張表:采集路線CollectLine ,采集點,目的地 其中采集路線和采集點的關系是一對多 采集線路和目的地的關系是一對一,目的地表 是主表,是關系維護端

@Entity@Table(name = "t_collect_line")public class CollectLine { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) PRivate Long id; //主鍵 @Column(name = "name", length = 100) private String name;// 采集線路名稱 //刪除采集線路表時,級聯刪除屬于這個表的采集點 @JSONField(serialize = false) @OneToMany(cascade = CascadeType.ALL, mappedBy = "collectLine", fetch = FetchType.LAZY) private Set<CollectLinePoint> collectLinePoints = new HashSet<CollectLinePoint>();//關聯采集點 //刪除采集線路表時,級聯刪除屬于這個表的目的地 @JSONField(serialize = false) @OneToOne(cascade = CascadeType.ALL, mappedBy = "collectLine", fetch = FetchType.LAZY) private Destination destination; //關聯目的地 //getter setter方法,構造方法}

目的地表

@Entity@Table(name = "t_destination_point")public class Destination extends BaseEntity<Long> { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; //主鍵 @Column(name = "name", length = 50) private String name;// 名稱 @OneToOne(cascade = { CascadeType.REFRESH, CascadeType.MERGE }, fetch = FetchType.LAZY) @JoinColumn(name = "collect_line_id") private CollectLine collectLine; // 所屬線路,目的地表是關系維護端 //getter setter方法,構造方法}

采集點表

@Entity@Table(name = "t_collect_line_point")public class CollectLinePoint extends BaseEntity<Long> { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; //主鍵 @Column(name = "name", length = 50) private String name;// 名稱 @ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.EAGER) @JoinColumn(name = "collect_line_id") private CollectLine collectLine;// 所屬線路,采集點表是關系維護端 //getter setter方法,構造方法}

主表和從表的區別: 主表負責維護關系,用@JoinColumn注釋,從表不用這個注釋 從表不負責維護關系,從表的@OneToOne等注釋中有mappedBy屬性,該屬性的值為 在主表中定義的 從表類的字段名 。比如在主表(目的地)中定義的 從表(采集線路表)類的字段名

@JSONField注解 @JSONField是fastjson中的一個注解。在屬性頭上加上這個注解中,在對對象進行json轉換時,該屬性,將不會參與格式化。 如果在從表中,定義主表類的屬性時不加這個注解,會跑出如下錯誤 這里寫圖片描述

@JoinColumn是可選的,關聯字段默認值列名為:主體的關聯屬性名+下劃線+被關聯端的主鍵列名. 在這個例子中是collectLine_id, 因為關聯的屬性是collectLine, 表CollectLine的主鍵是id.

@Column是可選的,默認值和類的屬性名一致

@Temporal主要是用來指明java.util.Date 或 java.util.Calendar 類型的屬性具體與數據庫(date,time,timestamp)三個類型中的那一個進行映射 例如@Temporal(TemporalType.TIMESTAMP)

@OneToMany等有5個屬性 1.casCade 該屬性定義類和類之間的級聯關系 可選值為CascadeType.PERSIST(級聯新建)CascadeType.REMOVE(級聯刪除)、CascadeType.REFRESH(級聯刷新)、CascadeType.MERGE(級聯更新) CascadeType.ALL 。 2.fetch屬性,有兩個值 FetchType.EAGER表示關系類(本例是OrderItem類)在主類加載的時候同時加載,FetchType.LAZY表示關系類在被訪問時才加載。 默認值是FetchType.LAZY 3.optional = true 該屬性可以為null 4.mappedBy 在從表中才定義這個屬性 5.targetEntity屬性:Class類型的屬性。定義關系類的類型,默認是該成員屬性對應的類類型,所以通常不需要提供定義。 casCade負責增刪改,fetch負責查

//級聯修改和更新,該屬性不能為null,懶加載@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, optional = false,fetch = FetchType.LAZY)@JoinColumn(name = "collect_line_id")private CollectLine collectLine;// 所屬線路,采集點表是關系維護端
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91成人久久 | 亚洲人成中文字幕在线观看 | 国产91丝袜在线播放 | 久草干| 精品一区二区三区免费爱 | 国产精品成人一区二区三区电影毛片 | 久久精品亚洲欧美日韩精品中文字幕 | 免费在线看黄 | tube69xxxxxhd| 免费一级a毛片免费观看 | 久久久久一本一区二区青青蜜月 | 国产乱淫av片免费观看 | 成人国产高清 | 极品一级片 | 男女视频免费看 | 2018亚洲男人天堂 | 国产69精品久久久久孕妇黑 | 久久久免费观看完整版 | 久久久精品综合 | 日韩1区| 日本不卡一区二区在线观看 | 欧美视频一区二区三区在线观看 | 精品国产乱码一区二区 | 最新亚洲视频 | 韩毛片| 国产精品久久久久久久久久久天堂 | 欧洲成人综合网 | 成人三级免费电影 | 欧美一区2区三区4区公司二百 | 精品国产一区二区三区久久久狼牙 | 久久久久国产成人精品亚洲午夜 | 免费国产不卡午夜福在线 | www.17c亚洲蜜桃 | 免费观看一级黄色片 | 日日草夜夜草 | 成人男女啪啪免费观看网站四虎 | 免费视频www在线观看 | 久久精品视频亚洲 | 毛片视频在线免费观看 | 久草在线最新 | av免费在线观看av |