1、數據庫原型數據庫
數據庫模型如圖所示,而如今須要根據數據庫模型,創建對應的實體類,這在項目重構老數據庫,採用新的框架重構上應該是比較常見的。框架
數據庫腳本以下:ide
1 CREATE TABLE `bomsub` ( 2 `subId` varchar(40) NOT NULL COMMENT '子類型ID', 3 `mainId` varchar(40) NOT NULL COMMENT '主類型ID', 4 `subName` varchar(40) NOT NULL COMMENT '子類型名稱', 5 `engName` varchar(255) NOT NULL, 6 `deleted` int(1) NOT NULL DEFAULT '1' COMMENT '當前是否刪除', 7 PRIMARY KEY (`subId`), 8 KEY `FK_Reference_47` (`mainId`), 9 CONSTRAINT `FK_Reference_47` FOREIGN KEY (`mainId`) REFERENCES `bommain` (`mainId`) 10 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Bom表的小類';
實體類構成:ui
1 @Entity 2 @Table(name = "bomsub") 3 public class BomSub extends SuperEntity { 4 5 6 /** 7 * 子類型ID 8 */ 9 @Id 10 @GenericGenerator(strategy = "uuid", name = "subId") 11 @GeneratedValue(generator = "subId") 12 @Column(length = 40) 13 public String subId; 14 15 /** 16 * 主類型ID 17 */ 18 @ManyToOne(cascade = {CascadeType.ALL}) 19 @JoinColumn(name = "mainId", foreignKey = @ForeignKey(name = "FK_Reference_47"), columnDefinition = "varchar(40) NOT NULL COMMENT '主類型ID'") 20 public BomMain bomMain; 21 22 /** 23 * 子類型名稱 24 */ 25 @Column(nullable = false, length = 40) 26 public String subName; 27 28 /** 29 * 英文名稱 30 */ 31 @Column(nullable = false) 32 public String engName; 33 34 /** 35 * 全部字段的是否存在 36 */ 37 @Column(nullable = false, columnDefinition = "int(1) default 1 COMMENT '當前是否刪除'") 38 public Integer deleted; 39 40 41 }
主要部分:spa
/**
* 主類型ID
*/
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "mainId", foreignKey = @ForeignKey(name = "FK_Reference_47"), columnDefinition = "varchar(40) NOT NULL COMMENT '主類型ID'")
public BomMain bomMain;
@ManyToOne代表表的關係是多對一,就是子表bomsub的mainId,是一個,可是對應着多個bomMain的Id3d
@JoinColumn 代表兩個表是如何關聯的,關聯須要的條件code
內部屬性 name : 關聯兩個表外鍵的名稱blog
foreignKey :外鍵的設置,這裏對其名稱進行設置,就會將索引的名稱設置爲這裏名字的設置 索引
columnDefinition :DDL拼接,這裏指的是這個屬性的SQL語句的設置generator
當這個表生成的時候就會把剩下的部分在JPA模式下自動生成設置的SQL語句。