我在我的应用程序中使用JPA而不是hibernate。我在我的一个域对象中有序列生成器,如下所示: -
@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;
它给了我正确的价值。请帮忙。
答案 0 :(得分:1)
我遇到了类似的问题。为了解决这个问题,我必须将 allocationSize 添加到序列生成器。
@SequenceGenerator(名称=&#34; IMPORT_RUN_ID_GEN&#34;,sequenceName =&#34; SEQ_IMPORT_RUN_ID&#34; ,<强> allocationSize = 1 强>)
默认情况下,alllocation size是50.您必须在DB端声明INCREMENT BY 50,或者DB中的任何增量值都提供与sequenceGeenerator中的allocationsize相同的值或 allocationSize = 1 将在这两种情况都是因为每次需要新ID时,hibernate都会在DB中触发查询。
请尝试在sequenceGenerator中添加 allocationsize = 1 ,然后再运行。