升级到休眠 5 后 JPA 应用程序中的序列生成器警告
Sequence generator warning in JPA Application after upgrading to hibernate 5
在 JPA 应用程序中升级到 hibernate 5 后,我遇到了以下问题。
HHH90000015: Found use of deprecated [org.hibernate.id.MultipleHiLoPerTableGenerator] table-based id generator; use org.hibernate.id.enhanced.TableGenerator instead.
和
HHH90000014: Found use of deprecated [org.hibernate.id.SequenceGenerator] sequence-based id generator; use org.hibernate.id.enhanced.SequenceStyleGenerator instead.
实体是这样注释的:enter code here
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="TB_SEQ_GEN")
private long id;
和
@Id
@GeneratedValue
private long id;`
persistence.xml:`
<shared-cache-mode>NONE</shared-cache-mode>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"></property>
<property name="hibernate.show_sql" value="false"></property>
<property name="hibernate.hbm2ddl.auto" value="update"></property>
<property name="hibernate.id.new_generator_mappings" value="true">
</property>
orm.xml:
<table-generator name="TB_SEQ_GEN" table="SEQUENCE_GENERATOR" schema="tb" pk-column-name="SEQ_NAME" value-column-name="NEXT_VAL" pk-column-value="TB" initial-value="1000" allocation-size="1000">
尝试将映射更改为如下内容:
@Id
@GenericGenerator(
name = "myTableGenerator",
strategy = "org.hibernate.id.enhanced.TableGenerator",
parameters = {
@Parameter(name = "table_name", value = "MY_SEQUENCES")
}
)
@GeneratedValue(generator = "myTableGenerator")
private long id;
和:
@Id
@GenericGenerator(
name = "mySequenceGenerator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "MY_SEQUENCE"),
@Parameter(name = "initial_value", value = "1000"),
@Parameter(name = "increment_size", value = "1")
}
)
@GeneratedValue(generator = "mySequenceGenerator")
private long id;
在 JPA 应用程序中升级到 hibernate 5 后,我遇到了以下问题。
HHH90000015: Found use of deprecated [org.hibernate.id.MultipleHiLoPerTableGenerator] table-based id generator; use org.hibernate.id.enhanced.TableGenerator instead.
和
HHH90000014: Found use of deprecated [org.hibernate.id.SequenceGenerator] sequence-based id generator; use org.hibernate.id.enhanced.SequenceStyleGenerator instead.
实体是这样注释的:enter code here
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="TB_SEQ_GEN")
private long id;
和
@Id
@GeneratedValue
private long id;`
persistence.xml:`
<shared-cache-mode>NONE</shared-cache-mode>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"></property>
<property name="hibernate.show_sql" value="false"></property>
<property name="hibernate.hbm2ddl.auto" value="update"></property>
<property name="hibernate.id.new_generator_mappings" value="true">
</property>
orm.xml:
<table-generator name="TB_SEQ_GEN" table="SEQUENCE_GENERATOR" schema="tb" pk-column-name="SEQ_NAME" value-column-name="NEXT_VAL" pk-column-value="TB" initial-value="1000" allocation-size="1000">
尝试将映射更改为如下内容:
@Id
@GenericGenerator(
name = "myTableGenerator",
strategy = "org.hibernate.id.enhanced.TableGenerator",
parameters = {
@Parameter(name = "table_name", value = "MY_SEQUENCES")
}
)
@GeneratedValue(generator = "myTableGenerator")
private long id;
和:
@Id
@GenericGenerator(
name = "mySequenceGenerator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "MY_SEQUENCE"),
@Parameter(name = "initial_value", value = "1000"),
@Parameter(name = "increment_size", value = "1")
}
)
@GeneratedValue(generator = "mySequenceGenerator")
private long id;