DB2 SQLCODE: -1476, SQLSTATE: 40506, SQLERRMC: -964 吐血提问
陪公主读书 2010-03-18 11:47:54 今天db2报了一个这样的错误,把我都搞晕了,查了一顿资料也没找到答案。在这里问问csdn的大虾,吐血拜问。
错误日志:
2010-03-18 18:59:39,937 WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: -99999, SQLState: null
2010-03-18 18:59:39,937 ERROR org.hibernate.util.JDBCExceptionReporter - [ibm][db2][jcc][102][10040] 非自动批处理出现故障。虽然已经提交了批处理,但是该批处理的某个成员至少发生了一个异常。
使用 getNextException() 来检索已经过批处理的特定元素的异常。
2010-03-18 18:59:39,937 WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: -1476, SQLState: 40506
2010-03-18 18:59:39,937 ERROR org.hibernate.util.JDBCExceptionReporter - Error for batch element #1: DB2 SQL error: SQLCODE: -1476, SQLSTATE: 40506, SQLERRMC: -964
2010-03-18 18:59:39,937 WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: -99999, SQLState: null
2010-03-18 18:59:39,937 ERROR org.hibernate.util.JDBCExceptionReporter - [ibm][db2][jcc][103][10843] 在批处理期间发生了不可恢复的链断开异常。批处理被非自动终止。
2010-03-18 18:59:39,953 ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
情景描述:
n 1 n 1 n 1
A--------->B-------->C-------->D
这4个实体对象的关系如上,在调用hibernate保存时,代码是这样写的,伪代码:
D d = new D();------------只有一个
C c = new D();
d.addC(c);
。。。。。。。(代表很多)
B b = new B();
c.addB(b);
。。。。。。。(代表很多)
A a = new A();
b.addA(a);
。。。。。。。(代表很多)
dao.saveOrUpdate(d);
b+c+d 数目在2万左右时,插入数据库记录完全正常,速度很快,就是比较吃内存。
但是在b+c+d 数目在10万左右时,就报上述的错误了,非常郁闷。请赐教。。。