2016-07-23 105 views
2

我不知道如何設置@GenerateValue@Id的初始值。如何在Spring JPA for MySQL中爲@Id @GeneratedValue設置初始值?

我已經嘗試過使用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() { 

    } 
} 

代碼

@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

Application.properties爲SRING引導:

spring.jpa.properties.hibernate.id.new_generator_mappings=true 
+0

如果你設置分貝自己,你可以做到這一點你的mysql數據庫中,如果它不使用JPA/ORM產生的,它只是映射,而無需實際創建數據庫。 – Sarief

+0

我試着用MySQL數據庫上的表生成器,它完美的工作。但我沒有用過春天。 – ujulu

回答

1

你可以嘗試使用@TableGenerator(JPA有@TableGenerator註釋中,你可以設置一個初始值)。該初值可以用來播種值

這裏舉例:http://www.java2s.com/Code/Java/JPA/SetInitialValueOfTableGenerator.htm

+0

檢查上面我也試過TABLE沒有成功。它從1開始,即使我設置了初始值。 – ALM

+0

在這種情況下,這是您的JPA提供程序中的錯誤,所以您應該告訴他們 –