根据这里的Hibernate开发者指南3.3,Hibernate提供了多种方式来支持生成标识符。但是这是通过使用基于XML的Map。[1]如何使用Annotations来做同样的事情?
特别是我对“增量”类型感兴趣。我发现最接近的方法是使用@GeneratedValue(strategy=GenerationType.AUTO)
。但这是一个基于JPA的策略。
我如何使用基于Hibernate的Annotations?
甚至这些信息也没有出现在4.3版的Hibernate开发者指南中!有什么特别的原因吗?
更新
我非常清楚JPA的四种策略。我对Hibernate提供的其他类型感兴趣。像hilo
,increment
,等等。在文档中,这是通过使用XML配置来完成的。有什么方法可以将其与Annotations一起使用吗?
3条答案
按热度按时间gjmwrych1#
Hibernate实现了JPA并使用JPA id生成策略。
请在此处查看4.3:http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/:第5.1.2.2节.标识符生成器的文档
Hibernate还提供了@GenericGenerator,可以通过传入strategy属性来配置Hibernate特定的生成器
lxkprmvk2#
对于
Hibernate 4.x
,您可以找到4种类型的Generation Types
这是默认策略,可以跨不同的数据库移植。Hibernate根据数据库选择适当的ID。
GeneratorType.IDENTITY -此设置基于某些数据库提供的标识;数据库负责提供唯一标识符。
SEQUENCE --有些数据库提供了一种序列号机制,所以这个设置将允许Hibernate使用序列号。
有时候主键是从另一个表中的唯一列创建的。在这种情况下,使用TABLE生成器。
关于
Annotations:
如果ID生成策略为
NOT SET
,则表示您正在使用AUTO Strategy
。要使用其他人,请注解如下:
字符串
或
型
或
型
你也可以使用
Composite Identifiers
,在这种情况下,我建议你去书Just Hibernate
。2mbi3lxu3#
这对我很有效:
字符串