首页 > 其他分享 >联合主键与自动建表

联合主键与自动建表

时间:2022-12-08 11:25:21浏览次数:29  
标签:建表 String private Id version 自动 主键 name

当你使用了两个@Id的时候,就一定要使用jpa的联合主键方法规范,注:实体类不会限制@Id的数量写一万个也不会报错

@Entity
@Table(name = "download_info_notid")
@IdClass(DownloadURLPK.class)
public class DownloadURL {
    @Id
    @Column(name = "name")
    private String name;
    @Id
    @Column(name = "version")
    private String version;
    @Column(name = "url",columnDefinition = "varchar(1000)")
    private String url;

    private String sha256;
public class DownloadURLPK implements Serializable {
    private String name;
    private String version;
}
@Repository
public interface DownloadURLRepository extends JpaRepository<DownloadURL, DownloadURLPK> {
    DownloadURL findByNameIsAndVersionIs(String name,String version);
    List<DownloadURL> findByName(String name);
//    DownloadURL findById(int id);
}

这是一个示例,具体方法百度搜索


 

重要

jpa默认不会自动建表,如果你的数据库没有相应的表就会报什么,nosuchresultset的错误

yml配置文件,开启自动建表

server:
  port: 8888
spring:
  datasource:
    url: jdbc:mysql://192.168.0.120:3306/wyy?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update

注意:有五个属性可以设置(create,update,create-drop,none,validate)

注意:update,不会去修改已经写好的表,比如,name字段你提前建好,是varchar(255)。这时即使你在实体类使用注解修改该字段类型,也不会起作用,还是varchar(255)

再举例:假如你提前建好一个字段名对应的,但是没有设置主键的表(mysql可以没有主键),这时即使对应实体类有两个@Id也不会生成主键,我遇到的就是这个问题

 再再举例:

@Column(name = "version",columnDefinition = " comment '版本'")

这时添加备注无效

遇到这种情况,想要达到每次都更新就要使用create属性,还未探究create属性的缺点

一步错,步步错,根本不知道到底哪一步错了,所以找起来很花时间,要一个一个找,所以每一步都要确保正确合规

 

标签:建表,String,private,Id,version,自动,主键,name
From: https://www.cnblogs.com/wYYBLH/p/16965576.html

相关文章

  • 实现湖南科技大学公众号自动健康打卡
    实现湖南科技大学公众号自动健康打卡本人一直在校基本没出过校门,所以健康打卡每日基本都是重复的但由于自己总是忘记打卡导致被打电话很是烦躁,于是编写了js脚本实现......
  • JS操作form表单倒计时自动提交
     只需要注意表单的id<formid="frm"action="http://www.baidu.com">考试还剩余<divid="time"></div></form><script>vartimes=45*60;//剩余时间,单位......
  • 【小技巧】matlab运行包含子程序时自动变更路径方法
     当一个matlab程序中,包含多个子函数,此时,当我们运行主要函数main的时候,matlab会自动弹出如下的对话框:   此时,我们需要点击第一个按键:更改文件夹,此时matlab会自动将左......
  • apifox 自动登录示例 前置操作 模拟登录
     //第一步:点击「根目录-前置操作」//第二步,环境变量中设置LOGIN_USERNAME和LOGIN_PASSWORD//第三步:必须让后端忽略验证码之类的验证//定义发送登录接口请......
  • jekins接口自动化windows部署一本地代码
    一、登录jekins管理端,新建项目(新建item)      二、进入项目详情-首次构建,生成工作空间三、查看构建历史记录--控制台输出,  四、找到工作空间目录 ......
  • Mybatis-Plus主键生成策略详解
    文章目录​​前言​​​​一、官网​​​​二、主键注解@TableId说明​​​​1、源码​​​​2、作用​​​​3、使用​​​​三、主键生成策略-IdType枚举说明​​​​1、......
  • 应大数据时代而写了个自动采集电影素材的网页
       素材示例网站:WWW.DY185.COM 采用分布式架构:JAVA系统:后台用到HIBERNATE5.0 SPRINGMVCORACLE.NET系统:企业库5.0+EF4.0开发,结合WCF架构。原理如下:后......
  • MySQL主键自增
    1.查看自增值SELECTAuto_incrementFROMinformation_schema.TABLESWHERETable_Schema='database'ANDtable_name='tableName'2.设置自增值altertable......
  • logback过期日志文件自动删除
    前言logback应该是目前最主流的日志框架了,在实际使用中经常遇到打印的日志文件不会自动删除,导致日志文件占有大量磁盘空间的问题。本文主要介绍logback日志文件自动删除的实......
  • Acrel-1000变电站综合自动化系统在某机械制造公司35kV变电站改造应用
    摘要:随着国家经济的发展,企业的业务扩大,用电负载需求也不断提供,使我国电站综合自动化系统不断在应用中获得改善,让电站综合自动化改造技术持续提高。目前大部分先进设备以及......