Hibernate with Spring批处理-选择插入查询后追加的作用域\u identity()

Hibernate with Spring批处理-选择插入查询后追加的作用域\u identity(),spring,hibernate,db2,spring-batch,datapersistance,Spring,Hibernate,Db2,Spring Batch,Datapersistance,我有一个带有以下字段的VO- HD_REC_ID REC_TYP_CD SRC_SYS_NM SRC_TYP_CD RCV_SYS_CD JOB_STTS_CD IDX_FILE_NM IDX_FILE_LOC_TXT XTRCT_DT XTRCT_TM DTL_REC_CNT ATCH_CNT ERR_MSG_TXT PROC_MODE_CD INVLD_HD_REC_TXT CRT_TS 所使用的注释如下: @Id @Column(name = EntityConstants.HD_REC

我有一个带有以下字段的VO-

HD_REC_ID
REC_TYP_CD
SRC_SYS_NM
SRC_TYP_CD
RCV_SYS_CD
JOB_STTS_CD
IDX_FILE_NM
IDX_FILE_LOC_TXT
XTRCT_DT
XTRCT_TM
DTL_REC_CNT
ATCH_CNT
ERR_MSG_TXT
PROC_MODE_CD
INVLD_HD_REC_TXT
CRT_TS
所使用的注释如下:

@Id
@Column(name = EntityConstants.HD_REC_ID)
@GeneratedValue(strategy = GenerationType.AUTO)
private int headerId;

@Generated(value = GenerationTime.INSERT)
@Column(name = EntityConstants.CRT_TS)
@Temporal(TemporalType.TIMESTAMP)
private Date creationTime;
其中第一个和最后一个字段(HD_REC_ID和CRT_TS)是自动生成的。 在将值插入DB时,这是我在控制台(已编辑的控制台)上得到的结果

据我所知,这是因为stmt
select scope\u identity()
没有在前面加分号。但我不会把这叫做任何地方。 当我将我们在SQLServer上创建的POC移动到DB29上DBA创建的数据库时,发生了这个错误。这在SQL server上非常有效。当应用程序在SQL server上时,在insert stmt日志之后没有附加
select scope\u identity()

我对Hibernate和Spring(批处理)都很陌生。对不起,如果你觉得这很傻。。。但令人惊讶的是,我在网上没有发现任何这种类型的东西。。。 我查看了这个链接,了解了身份。


任何帮助都将不胜感激。。。谢谢

您是否将方言从
sqlserverdialent
更改为
dbdialent
select scope\u identity()
cames from
sqlserverdialent.appendIdentitySelectToInsert()

[8/5/13 15:22:12:666 IST] 00000063 SystemOut     O Hibernate: insert into T_HD_REC (ATCH_CNT, ERR_MSG_TXT, XTRCT_DT, XTRCT_TM, IDX_FILE_LOC_TXT, IDX_FILE_NM, INVLD_HD_REC_TXT, JOB_STTS_CD, PROC_MODE_CD, DTL_REC_CNT, REC_TYP_CD, RCV_SYS_CD, SRC_SYS_NM, SRC_TYP_CD) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select scope_identity()
[8/5/13 15:22:13:046 IST] 00000063 SystemOut     O (JDBCExceptionReporter.java:100) 2013-08-05 15:22:13,045 -- WARN -- SQL Error: -199, SQLState: 42601
[8/5/13 15:22:13:047 IST] 00000063 SystemOut     O (JDBCExceptionReporter.java:101) 2013-08-05 15:22:13,046 -- ERROR -- DB2 SQL error: SQLCODE: -199, SQLSTATE: 42601, SQLERRMC: SELECT;;FOR <END-OF-STATEMENT> NOT ATOMIC
[8/5/13 15:22:13:047 IST] 00000063 SystemOut     O (JDBCExceptionReporter.java:100) 2013-08-05 15:22:13,047 -- WARN -- SQL Error: -516, SQLState: 26501
[8/5/13 15:22:13:048 IST] 00000063 SystemOut     O (JDBCExceptionReporter.java:101) 2013-08-05 15:22:13,047 -- ERROR -- DB2 SQL error: SQLCODE: -516, SQLSTATE: 26501, SQLERRMC: null
[8/5/13 15:22:13:048 IST] 00000063 SystemOut     O (JDBCExceptionReporter.java:100) 2013-08-05 15:22:13,048 -- WARN -- SQL Error: -518, SQLState: 07003
[8/5/13 15:22:13:049 IST] 00000063 SystemOut     O (JDBCExceptionReporter.java:101) 2013-08-05 15:22:13,048 -- ERROR -- DB2 SQL error: SQLCODE: -518, SQLSTATE: 07003, SQLERRMC: null


com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -199, SQLSTATE: 42601, SQLERRMC: SELECT;;FOR <END-OF-STATEMENT> NOT ATOMIC
-518
THE EXECUTE STATEMENT DOES NOT IDENTIFY A VALID PREPARED STATEMENT
-516
THE DESCRIBE STATEMENT DOES NOT SPECIFY A PREPARED STATEMENT
-199
ILLEGAL USE OF KEYWORD keyword. TOKEN token-list WAS EXPECTED