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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM