Hibernate错误表生成的值

时间:2016-03-07 18:09:55

标签: java hibernate jpa entity

应用程序基于spring-boot和hibernate for JPA provider。映射类以使用表中生成的ID值。所有课程都类似于:

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

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

    //...
}

应用程序在启动时使用Flyway构建模式(包括hibernate_sequence表),在hibernate验证模式之后在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会产生这种奇怪的值?

1 个答案:

答案 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;