如何在Hibernate中为主键id实现Sequence Generator,以便它可以在Oracle,MSSQL和MySQL等多个数据库中使用?
答案 0 :(得分:1)
要拥有一个可以在许多数据库中使用的序列生成器,最好使用表生成器,因为它不是特定于数据库的。
各种数据库不支持序列生成器(使用SQL序列)。
您需要创建一个表来维护序列值。 它应该包含2列&一排。 列是
Varchar
类型)Number
类型)表中的单行应包含用于标识序列下一个值的任何名称的varchar
值。
可用于表生成器的语法如下:
@Entity
@TableGenerator(name="Your_Generator_Name",table="Your_Generator_Table_Name",pkColumnName="Primay_Key_Name",pkColumnValue="Varchar_value_in_PkColumn",valueColumnName="Next Value")
public class MyEntityClass{
@Id
@GeneratedValue(strategy="GenerationType.TABLE",generator="name_in_TableGenerator"
Integer primaryId;
//rest of code
}
有关详细信息,请参阅this link