我在应用程序中通过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中的任何增量值都必须提供与sequenceGeenerator中的allocationsize相同的值,或者在两种情况下都可以工作,因为hibernate每次都会在DB中触发查询需要新ID的时间。
请尝试在您的sequenceGenerator中添加分配大小= 1,然后再运行。