保存的JAVA报错,帮忙看看,应该是主表里的主键跟明细表里的外键有问题了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存的JAVA报错,帮忙看看,应该是主表里的主键跟明细表里的外键有问题了相关的知识,希望对你有一定的参考价值。

ERROR [SpringAction:handleRequestInternal(83)] Error:null
Caused by: org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:654)
at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:717)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:586)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:314)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:629)
at com.ait.lotte.stock.service.OmExStockService$$EnhancerByCGLIB$$567c79db.saveOmExStock(<generated>)
at com.ait.lotte.stock.action.OmExStockAction.saveOrUpdate(OmExStockAction.java:391)
... 38 more
Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61)
at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:578)
... 46 more

参考技术A 你主键设置成了自增了吧。如果是那样你就不要把这个属性带入进去了 参考技术B 更新主键时的错误追问

主键是自增长的,保存的时候,主键的VALUE=0,我觉得这没什么问题啊,怎么报了这样的错?还请详细讲下

追答

主键是唯一的,怎么能总是等于零呢

追问

不是,我的意思是,DEBUG的时候,里面是0,而且数据库表里面是没有值的,是保存

追答

主键生成策略是什么,加这个群101668177

参考技术C 主键必须唯一。 参考技术D 46

Oracle9i用客户端PLSQL导入dmp文件的时候,有一些表的主键导入失败。帮帮忙。

那些导不进去数据如:"CREATE UNIQUE INDEX "SYS_C004056_1_2" ON "SUBSIDEWORKKNOWNCARD" ("
IMP-00003: 遇到 ORACLE 错误 921
ORA-00921: 未预期的 SQL 命令结尾
应该是主键的名称不规范导致的错误,之前建表的时候是用Enterprise Manager Console创建的,之后重装过系统。

应该是数据问题,违反唯一索引的约束条件,比如ID不能重复,或者有部分要导入的数据(那个UNIQUE INDEX相关的列)已经存在的
1. 单独建个临时用户
2. 将有类似错误的表先都导入这个用户下(可以加参数 ignore=n)
3. 找报错的行再单独分析处理追问

当初建表的时候,如果表是违反唯一索引的约束条件的话,是建立不起来的。那么怎么会在导到新数据库后就会重复呢。

追答

现在是在导入数据,但是不排除有的数据已经存在,或者已经导入过
这种情况再导入的时候,重复的数据就会因为违反唯一约束而失败

追问

在这之前数据库是一条数据都没有的。

参考技术A 能把创建主键的这段代码全部发出来吗追问

这些信息是导表时的日志其中一个表的信息,就这么多。

以上是关于保存的JAVA报错,帮忙看看,应该是主表里的主键跟明细表里的外键有问题了的主要内容,如果未能解决你的问题,请参考以下文章

数据库主键跟外键

请问SQL server 中的主键和外键的作用

SQL中啥叫主键,啥是外键,有啥关系

Oracle9i用客户端PLSQL导入dmp文件的时候,有一些表的主键导入失败。帮帮忙。

做java项目时的主键和外键是啥啊?

SQL中主键的作用是啥?外键的作用是啥?