【问题标题】:SqlServer convert to mySql5.5 ,jpa @GeneratedValue does not workSqlServer 转换为 mySql5.5,jpa @GeneratedValue 不起作用
【发布时间】:2016-05-23 10:40:24
【问题描述】:

当我将我的数据库从 Sql Server 转换为 MySql 时,JPA @GeneratedValue 不起作用,返回 null,代码如下:

@Id
@GeneratedValue
@Column(name = "ID", unique = true, nullable = false)
public Integer getId() {
    return id;
}

我应该更改一些属性吗?

【问题讨论】:

    标签: java mysql sql-server hibernate jpa


    【解决方案1】:

    需要明确指定生成策略

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    

    基本上有4种生成策略:

    • 自动
    • 身份
    • 序列

    【讨论】:

    • @GeneratedValue 有默认值(strategy = GenerationType.AUTO),当数据库是MySql时,值是AUTO_INCREMENT,不是吗?
    • AUTO 实际上的意思是“JPA 提供者选择”……而不是 AUTO_INCREMENT。因此,除非您选择 IDENTITY、SEQUENCE 或 TABLE,否则您不能依赖任何特定的使用。
    • 正如@NeilStockton 已经提到的。 GenerationType.AUTO 让 JPA Provider 来决定生成策略,它可以选择基于表或基于序列的策略,所以你拥有的数据源具有高权限是好的(它必须创建一个表或序列,这些都是高权限操作经常受限)
    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2021-05-24
    • 2015-11-03
    相关资源
    最近更新 更多