我的ID是如何使用Hibernate与Oracle 10g方言一起使用JPA生成的? [英] How is my id being generated with JPA using Hibernate with the Oracle 10g dialect?

查看:147
本文介绍了我的ID是如何使用Hibernate与Oracle 10g方言一起使用JPA生成的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些代码:

  @Id 
@SequenceGenerator(name =SOMETHING_SEQ)
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator =SOMETHING_SEQ)
@Column(name =SOMETHING,nullable = false)
私有长ID;

hibernate如何提供我的id?



我在我的数据库中看到一个名为'hibernate_sequence'的序列,并且没有其他hibernate'特殊表'。

SOMETHING_SEQ 是你在你的休眠配置中某处配置的序列的名字。而 hibernate_sequence 是数据库中的序列名称。
$ b

 < 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;

...
...

}

@实体
公共类实体2 {
@ Id
@SequenceGenerator(name =entity2Seq,sequenceName =ENTITY2_SEQ,allocationSize = 10)
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator =entity2Seq)
@Column name =ID,nullable = false)
私有长ID;

...
...

}


I have some code:

@Id
@SequenceGenerator(name = "SOMETHING_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SOMETHING_SEQ")
@Column(name = "SOMETHING", nullable = false)
private Long id;

How is hibernate providing my id?

I see in my database there a single sequence named 'hibernate_sequence' and no other hibernate 'special tables'.

解决方案

Actually, here your SOMETHING_SEQ is the name of sequence you configured somewhere in your hibernate config. And hibernate_sequence is the sequence name in the database. In configuration it would be looking something like below,

<sequence-generator name="SOMETHING_SEQ" 
    sequence-name="hibernate_sequence"
    allocation-size="<any_number_value>"/>

You can completely skip this configuration by using annotation instead. Then your @SequenceGenerator annotation would need to provide few more paramters. Below is the example.

@SequenceGenerator(name="SOMETHING_SEQ", sequenceName="hibernate_sequence", allocationSize=10)

For example multiple entity classes would do something like below,

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

  ...
  ...

}

这篇关于我的ID是如何使用Hibernate与Oracle 10g方言一起使用JPA生成的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆