【发布时间】:2016-11-27 00:11:09
【问题描述】:
我不知道如何为@GenerateValue @Id 设置初始值。
我尝试过使用GenerationType.SEQUENCE,但MySQL 不允许这样做。如何设置用于@GenerateValue 的初始值?
同时使用AUTO 和TABLE 除了1 之外,我仍然无法获得初始值
谢谢
代码使用AUTO
@Entity
@Data
@SequenceGenerator(name = "port_gen", sequenceName = "port_gen", initialValue = 4700)
public class AppiumPort {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "port_gen")
private Long port;
public AppiumPort() {
}
}
使用 TABLE 的代码
@Entity
@Data
public class AppiumPort {
@TableGenerator(name = "Address_Gen", table = "ID_GEN", pkColumnName = "GEN_NAME", valueColumnName = "GEN_VAL", pkColumnValue = "Addr_Gen", initialValue = 10000, allocationSize = 100)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "Address_Gen")
private int port;
public AppiumPort() {
}
}
** 更新 **
问题与未设置 hibernate.id.new_generator_mappings=true 相关;
https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/ch01.html
Sring Boot 的 Application.properties:
spring.jpa.properties.hibernate.id.new_generator_mappings=true
【问题讨论】:
-
如果你自己设置db,你可以在你的mysql数据库中进行,如果它不是用jpa/orm生成的,它只是映射,没有实际创建db。
-
我尝试在 MySQL 数据库上使用表生成器,它运行良好。但是我没有用过spring。
标签: java mysql spring jpa spring-data-jpa