国产神通数据库创建表时主键的分类

神通数据库创建表时主键的分类

  • 以下是基于springboot jpa去分析的,由于未找到spring.jpa.properties.hibernate.dialect配置相关的类,所以用了mysql和oracle的方言去展示
  • 1、使用UUID创建方言,此时主键为字符串类型,与方言联系不是特别密切,配置oracle或者mysql方言都行
  • 实体类中
@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
  • 2、使用Long类型,mysql方言展示
  • 实体类中
private Long id;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="ID",unique=true,nullable=false)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
  • -配置文件application.properties中
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
  • 数据库中给ID列绑定序列.先创建序列,然后通过数据库可视化界面或者编写sql语句创建。结果如下:
  • 表中id会随着序列号去变化,缺点是插入的时候,调用jpaRepository.save()方法时,返回对象id错误,是个固定值,与数据库中id不符合
  • 3、使用Long类型,oracle方言展示
  • 实体类中
private Long id;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="ID",unique=true,nullable=false)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

或者

private Long id;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="ID",unique=true,nullable=false)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
  • -配置文件application.properties中
spring.jpa.properties.hibernate.dialect=oorg.hibernate.dialect.Oracle10gDialect
  • 数据库中会自动创建序列
  • 结果如下:
    表中id会随着序列号去变化。缺点是多张表所共用一个序列,这个序列为hibernate_sequence序列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值