Java 使用oracle实现hibernate中的自动增量

Java 使用oracle实现hibernate中的自动增量,java,hibernate,primary-key,Java,Hibernate,Primary Key,我是新加入hibernate的,我想在我的表中插入主编号以进行唯一标识。我使用Oracle作为我的数据库,所以我是否需要在Oracle中创建序列以获得自动增量生成编号 我正在使用下面的代码,但它不工作。我还没有创建任何序列 @Id @Column(name = "id" ) @GeneratedValue ( strategy = GenerationType.TABLE) 我曾使用过AUTO、SEQUENCE和IDENTITY,但对我来说没有任何效果 您可以使用此@GeneratedV

我是新加入hibernate的,我想在我的表中插入主编号以进行唯一标识。我使用Oracle作为我的数据库,所以我是否需要在Oracle中创建序列以获得自动增量生成编号

我正在使用下面的代码,但它不工作。我还没有创建任何序列

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

我曾使用过
AUTO
SEQUENCE
IDENTITY
,但对我来说没有任何效果

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


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

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

通过这种方式,persist()方法将请求序列的下一个值,以便将其用作条目的ID。

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

如果您使用的是
strategy=GenerationType.TABLE
,则需要说明您的ID将从何处填充的表格

比如说,

@GeneratedValue(strategy=GenerationType.TABLE, generator="course")
@TableGenerator(
    name="course",
    table="GENERATOR_TABLE",
    pkColumnName = "key",
    valueColumnName = "next",
    pkColumnValue="course",
    allocationSize=30
)
对于其他选项,您可以使用
GenerationType.AUTO
选项,让hibernate根据数据库决定选择哪个选项

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

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

请重新检查GenerationType.auto您应该只需要
@Id
@GeneratedValue
,因为generated的默认值是自动递增的。它是什么意思…
AUTO
可以帮你。@KishanSarsechaGajjar brother我已经试过了,它给我这个错误。“Hibernate:从dual org.Hibernate.exception.sqlgrammareexception:无法获取下一个序列值”这会导致下面的错误“有时”>执行独立工作时出错;SQL[n/a];约束[SYSTEM.SYS_C0010941];嵌套异常为org.hibernate.exception.ConstraintViolationException:执行隔离工作时出错
 @Id
 @Column(name = "id" )
 @GeneratedValue (strategy = GenerationType.AUTO)