我的ID是如何使用Hibernate与Oracle 10g方言一起使用JPA生成的? [英] How is my id being generated with JPA using Hibernate with the Oracle 10g dialect?
问题描述
@Id
@SequenceGenerator(name =SOMETHING_SEQ)
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator =SOMETHING_SEQ)
@Column(name =SOMETHING,nullable = false)
私有长ID;
hibernate如何提供我的id?
我在我的数据库中看到一个名为'hibernate_sequence'的序列,并且没有其他hibernate'特殊表'。
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屋!