我在应用程序中通过Hibernate使用JPA。我在我的一个域对象中有一个序列生成器,如下所示:-

@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CPAY_PE_FORMAT_HTML_SEQ")
@SequenceGenerator(name="CPAY_PE_FORMAT_HTML_SEQ",sequenceName="CPAY_PE_FORMAT_HTML_SEQ")


但是,如果我在数据库中的查询下面触发,则会给我空值。

select CPAY_PE_FORMAT_HTML_SEQ.nextval from dual;


它给我正确的价值。请帮忙。

最佳答案

我遇到了类似的问题。要解决此问题,我必须向序列生成器添加allocationSize。

@SequenceGenerator(name =“ IMPORT_RUN_ID_GEN”,sequenceName =“ SEQ_IMPORT_RUN_ID”
,allocationSize = 1)

默认情况下,分配大小为50。您必须在DB端声明INCREMENT BY 50,或者DB中的任何增量值都必须提供与sequ​​enceGeenerator中的allocationsize相同的值,或者在两种情况下都可以工作,因为hibernate每次都会在DB中触发查询需要新ID的时间。

请尝试在您的sequenceGenerator中添加分配大小= 1,然后再运行。

08-28 17:18