国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

Hibernate注解表關(guān)聯(lián)

2024-07-21 02:52:09
字體:
供稿:網(wǎng)友

記錄Hibernate注解在表關(guān)聯(lián)時的應(yīng)用 總共有三張表:采集路線CollectLine ,采集點,目的地 其中采集路線和采集點的關(guān)系是一對多 采集線路和目的地的關(guān)系是一對一,目的地表 是主表,是關(guān)系維護(hù)端

@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;// 采集線路名稱 //刪除采集線路表時,級聯(lián)刪除屬于這個表的采集點 @JSONField(serialize = false) @OneToMany(cascade = CascadeType.ALL, mappedBy = "collectLine", fetch = FetchType.LAZY) private Set<CollectLinePoint> collectLinePoints = new HashSet<CollectLinePoint>();//關(guān)聯(lián)采集點 //刪除采集線路表時,級聯(lián)刪除屬于這個表的目的地 @JSONField(serialize = false) @OneToOne(cascade = CascadeType.ALL, mappedBy = "collectLine", fetch = FetchType.LAZY) private Destination destination; //關(guān)聯(lián)目的地 //getter setter方法,構(gòu)造方法}

目的地表

@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; // 所屬線路,目的地表是關(guān)系維護(hù)端 //getter setter方法,構(gòu)造方法}

采集點表

@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;// 所屬線路,采集點表是關(guān)系維護(hù)端 //getter setter方法,構(gòu)造方法}

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

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

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

@Column是可選的,默認(rèn)值和類的屬性名一致

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

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

//級聯(lián)修改和更新,該屬性不能為null,懶加載@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, optional = false,fetch = FetchType.LAZY)@JoinColumn(name = "collect_line_id")private CollectLine collectLine;// 所屬線路,采集點表是關(guān)系維護(hù)端
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 温州市| 建湖县| 穆棱市| 民勤县| 麻栗坡县| 涟源市| 土默特右旗| 金寨县| 稷山县| 临沂市| 兴化市| 莱西市| 突泉县| 大宁县| 黑山县| 东阿县| 镇赉县| 丰宁| 巴林右旗| 刚察县| 湄潭县| 中江县| 巴彦淖尔市| 贺兰县| 儋州市| 财经| 盘锦市| 海安县| 潜江市| 尼玛县| 凤翔县| 尖扎县| 荔浦县| 肇庆市| 合江县| 长葛市| 沐川县| 皋兰县| 同江市| 长子县| 四子王旗|