关于java:使用oracle在休眠中自动递增

Auto Increment in hibernate using oracle

我是休眠的新手,我想在表中插入主号码以进行唯一标识。 我正在使用Oracle作为数据库,是否需要在oracle中创建序列以获取自动增量生成编号?

我正在使用以下代码,但无法正常工作。 我尚未创建任何序列。

1
2
3
 @Id
 @Column(name ="id" )
 @GeneratedValue ( strategy = GenerationType.TABLE)

我已经使用过AUTOSEQUENCEIDENTITY,但是对我来说没有任何用。


这是在JPA映射的实体中使用Oracle序列的一种方式:

1
2
3
4
@Id
@Column(name ="ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="SEQUENCE_NAME")
@SequenceGenerator(name ="SEQUENCE_NAME", sequenceName ="SEQUENCE_NAME", allocationSize = 1, initialValue = 1)

这样,您的persist()方法将要求序列的下一个值,以便将其用作条目的ID。


您可以使用此@GeneratedValue(strategy=GenerationType.AUTO)

1
2
3
@Id
@Column(name ="id" )
@GeneratedValue(strategy=GenerationType.AUTO)


GenerationType.TABLE选项中,ID值将用其他表的列填充。

如果您使用的是strategy=GenerationType.TABLE,则需要在表格中填写ID。

例如,

1
2
3
4
5
6
7
8
9
@GeneratedValue(strategy=GenerationType.TABLE, generator="course")
@TableGenerator(
    name="course",
    table="GENERATOR_TABLE",
    pkColumnName ="key",
    valueColumnName ="next",
    pkColumnValue="course",
    allocationSize=30
)

对于其他选项,可以使用GenerationType.AUTO选项,然后让休眠模式根据数据库决定选择哪个选项。

1
2
3
 @Id
 @Column(name ="id" )
 @GeneratedValue (strategy = GenerationType.AUTO)

并确保正确配置了hibernate.cfg.xml文件。