如何在Spring JPA for MySQL中为@Id @GeneratedValue设置初始值?

时间:2016-07-23 02:05:50

标签: java mysql spring jpa spring-data-jpa

我无法弄清楚如何设置@GenerateValue @Id的初始值。

我已尝试使用GenerationType.SEQUENCE,但MySQL中不允许这样做。如何设置用于@GenerateValue的初始值?

同时使用AUTOTABLE除了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

1 个答案:

答案 0 :(得分:1)

您可以尝试使用@TableGenerator(JPA有一个@TableGenerator注释,您可以在其中设置初始值)。 initialValue可用于为值

设定种子

此处示例:http://www.java2s.com/Code/Java/JPA/SetInitialValueOfTableGenerator.htm