2016-03-07 22 views
0

應用程序基於Spring引導和休眠的JPA提供程序。將類映射爲使用表中生成的ID值。所有的類看起來與之相似於:Hibernate錯誤的表生成值

@Entity 
@Table(name = "table_name") 
public class SomeEntity { 

    @Id 
    @GeneratedValue(strategy = GenerationType.TABLE) 
    private Long id; 

    //... 
} 

應用建立架構上引導使用遷飛(包括hibernate_sequence表),插入基礎數據和在hibernate_sequence表移位序列,即休眠驗證模式之後:

spring.jpa.hibernate.ddl-auto=validate 

問題就是說,hibernate會在表中生成「隨機」值。

SELECT * FROM users; 

ID   NAME 
1   user1 
32899072 user2 



SELECT * FROM HIBERNATE_SEQUENCES; 

SEQUENCE_NAME SEQUENCE_NEXT_HI_VALUE 
user   1000 

爲什麼hibernate會產生這個奇怪的值?

+0

這將是很好,如果有一個問題在這裏創造了這個表。 –

回答

0

你可以嘗試添加@TableGenerator是Hibernate的GenerationType.TABLE

@Id 
@GeneratedValue(strategy=GenerationType.TABLE, generator="Table_name") 
@TableGenerator(
     name="Table_name", 
     table="GENERATOR_TABLE", 
     pkColumnName = "key", 
     valueColumnName = "next", 
     pkColumnValue="autoId", 
     allocationSize=30 
    ) 
private Long id; 
+0

註解@TableGenerator沒有解決問題。 – kris14an