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语句。