Java SqlServer转换为mySql5.5,jpa@GeneratedValue不起作用

Java SqlServer转换为mySql5.5,jpa@GeneratedValue不起作用,java,mysql,sql-server,hibernate,jpa,Java,Mysql,Sql Server,Hibernate,Jpa,当我将数据库从Sql Server转换为MySql时,JPA@GeneratedValue不起作用,返回null,代码如下: @Id @GeneratedValue @Column(name = "ID", unique = true, nullable = false) public Integer getId() { return id; } 是否要更改某些属性?您需要明确指定生成策略 @GeneratedValue(strategy = GenerationType.IDENTI

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

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

是否要更改某些属性?

您需要明确指定生成策略

@GeneratedValue(strategy = GenerationType.IDENTITY)
基本上有4种发电策略:

  • 自动的
  • 身份
  • 序列
  • 桌子

@GeneratedValue有默认值(strategy=GenerationType.AUTO),当数据库为MySql时,该值是自动递增的,不是吗?AUTO实际上意味着“JPA提供商选择”。。。不是自动递增。所以,除非您选择IDENTITY、SEQUENCE或TABLE,否则您不能指望使用任何特定的一个。GenerationType.AUTO使JPA提供程序决定生成策略,它可以选择基于表或基于序列的策略,因此您拥有的数据源最好具有高权限(它必须创建一个表或序列,而这些是高权限操作,通常受到限制)