一、數據庫原型
數據庫模型如圖所示,而現在需要根據數據庫模型,建立對應的實體類,這在項目重構老數據庫,采用新的框架重構上應該是比較常見的。
數據庫腳本如下:

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表的小類';
實體類構成:

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 }
主要部分:
/**
* 主類型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的Id
@JoinColumn 表明兩個表是如何關聯的,關聯需要的條件
內部屬性 name : 關聯兩個表外鍵的名稱
foreignKey :外鍵的設置,這里對其名稱進行設置,就會將索引的名稱設置為這里名字的設置
columnDefinition :DDL拼接,這里指的是這個屬性的SQL語句的設置
當這個表生成的時候就會把剩下的部分在JPA模式下自動生成設置的SQL語句。