IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA环境搭建,JPA注解@ManyToOne使用详情;JPA外键设置

一、数据库原型

       

数据库模型如图所示,而现在需要根据数据库模型,建立对应的实体类,这在项目重构老数据库,采用新的框架重构上应该是比较常见的。

数据库脚本如下:

 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表的小类';
View Code

实体类构成:

 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 }
View Code

主要部分:

/**
* 主类型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语句。

猜你喜欢

转载自www.cnblogs.com/liuyangfirst/p/9178814.html