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

  • 相关阅读:
    eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建
    Springmvc UPDATE 数据时 ORA-01858:a non-numeric character was found where a numeric was expected
    新建 jsp异常,The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Spring MVC 单元测试异常 Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file
    UE添加鼠标右键打开
    mysql 组合索引
    mysql 查询条件中文问题
    sqlserver 游标
    sqlserver 在将 nvarchar 值 'XXX' 转换成数据类型 int 时失败
    过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/9178814.html
Copyright © 2020-2023  润新知