我无法弄清楚如何设置@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
答案 0 :(得分:1)
您可以尝试使用@TableGenerator(JPA有一个@TableGenerator注释,您可以在其中设置初始值)。 initialValue可用于为值
设定种子此处示例:http://www.java2s.com/Code/Java/JPA/SetInitialValueOfTableGenerator.htm