4

我只是在阅读 Hibernate 文档并在此页面上遇到了警告

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e1150

“警告 Hibernate 团队一直认为这样的结构是根本错误的。在使用此功能之前,请努力修复您的数据模型。” 关于部分标识符生成

有人可以更详细地向我解释一下这实际上有什么问题吗?为什么 Hibernate 看不起生成的值?这是否包括 Hibernate 中的自动递增值?

谢谢,

4

2 回答 2

2

警告不是关于在只有一个 id 字段的类上使用 @GeneratedValue 。警告是关于在复合键的一列中使用@GeneratedValue,这是一个非常奇怪的用例(12 年来从未见过这样的需求)。

所以警告是:如果您需要在复合键中使用@GeneratedValue,请检查您的模型,因为它很可能有问题。

如果您认为这不能回答您的问题,您能否提供一个可能需要此功能的示例?

于 2012-07-31T10:24:09.227 回答
0

有一个代理标识符,它应该始终是在数据库级别被声明为主键的单个属性(以及列)。并且有一个业务标识符(也称为业务密钥),它具有业务含义并且可能由多个属性(以及列)组成。

生成单个代理标识符没有任何问题。Hibernate 团队最可能的意思是生成业务标识符的某些部分(在多个属性的情况下)是错误的。

于 2012-07-31T10:28:50.467 回答