我有一些代码:
@Id
@SequenceGenerator(name = "SOMETHING_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SOMETHING_SEQ")
@Column(name = "SOMETHING", nullable = false)
private Long id;
hibernate 如何提供我的 ID?
我在我的数据库中看到一个名为“hibernate_sequence”的序列,没有其他 hibernate “特殊表”。
最佳答案
实际上,这里您的 SOMETHING_SEQ
是您在 hibernate 配置中某处配置的序列名称。而hibernate_sequence
是数据库中的序列名。在配置中,它看起来像下面这样,
<sequence-generator name="SOMETHING_SEQ"
sequence-name="hibernate_sequence"
allocation-size="<any_number_value>"/>
您可以通过使用注释来完全跳过此配置。那么您的 @SequenceGenerator
注释将需要提供更多的参数。下面是示例。
@SequenceGenerator(name="SOMETHING_SEQ", sequenceName="hibernate_sequence", allocationSize=10)
例如多个实体类会做如下的事情,
@Entity
public class Entity1 {
@Id
@SequenceGenerator(name = "entity1Seq", sequenceName="ENTITY1_SEQ", allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity1Seq")
@Column(name = "ID", nullable = false)
private Long id;
...
...
}
@Entity
public class Entity2 {
@Id
@SequenceGenerator(name = "entity2Seq", sequenceName="ENTITY2_SEQ", allocationSize=10)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity2Seq")
@Column(name = "ID", nullable = false)
private Long id;
...
...
}
关于java - 如何使用 Hibernate 和 Oracle 10g 方言通过 JPA 生成我的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2384420/