5

我想在我的 JPA 2 实体上生成本机和可移植的 id,目前正在运行 Hibernate 和 MySQL

使用@GeneratedValue(strategy=AUTO) 时,休眠默认为 MySQL 上的“hibernate_sequence”表,我想要 IDENTITY

如果我使用@GeneratedValue(strategy=IDENTITY) 解决它,我会失去 Oracle/Postgres 的可移植性

当@GeneratedValue strategy=AUTO 时,如何设置 Hibernate 以使用 IDENTITY 作为 mysql 的默认值?

4

2 回答 2

1

如果不更改 Hibernate 中的代码,您将无法影响它。一种解决方法是为每个具有不同 id 要求的数据库使用不同的映射集(xml 而不是注释)。这当然是相当多的事情。

唯一真正独立于数据库供应商工作的可移植方式是使用 TABLE 策略生成 id。

于 2012-06-27T06:14:15.833 回答
1

您可以编写自己的自定义生成器,也可以在数据库上调用函数/存储过程来创建所需的身份。
看看这里,这是一个博客,里面有关于如何做我刚刚写的东西的很好的例子。

于 2012-06-27T03:42:31.020 回答