java - 如何使用 Hibernate 和 Oracle 10g 方言通过 JPA 生成我的 ID?

标签 java hibernate orm jpa oracle10g

我有一些代码:

@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/

相关文章:

spring - 无法提交 Hibernate 事务;嵌套异常是 org.hibernate.Transaction 异常 : JDBC commit failed

python - django tastypie 中的嵌套资源

java - 如何从Java中的单词中删除重复的字母

java - Hibernate PostUpdateEvent null 旧状态

java - 如何使用jsf管理表单上的多对多关系

python - Django内置的Web服务器: Usage and Reliability Concerns

java - Hibernate 用 NULL 覆盖列值?

java - 如何过滤 JTable 中的行?

java - 添加定制程序类以删除条形图中的条形之间的空间

java - Java 构建路径中缺少 .jar,且路径中存在反斜杠