org.springframework.dao.DataIntegrityViolationException

cdh0226 2012-05-29 02:50:49
在采用getHibernateTemplate().save的时候,不能执行成功,后台报错
org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:622)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:639)
at com.firsttech.ai.dao.common.impl.LogInOutDAOImpl.saveTicket(LogInOutDAOImpl.java:114)
Truncated. see log file for complete stacktrace
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
Truncated. see log file for complete stacktrace
java.sql.BatchUpdateException: ORA-01400: 无法将 NULL 插入 ("AIS"."T_SYS_TICKET"."LOGIN_ID")

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10698)
at weblogic.jdbc.wrapper.PreparedStatement.executeBatch(PreparedStatement.java:157)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
Truncated. see log file for complete stacktrace
>
<2012-5-29 下午02时41分47秒 GMT+08:00> <Error> <HTTP> <BEA-101083> <Connection failure.
java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '5669' bytes instead of stated: '5659' bytes.
at weblogic.servlet.internal.ServletOutputStreamImpl.ensureContentLength(ServletOutputStreamImpl.java:410)
at weblogic.servlet.internal.ServletResponseImpl.ensureContentLength(ServletResponseImpl.java:1293)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1335)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1375)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
Truncated. see log file for complete stacktrace



代码大概是:
public LogInOutDAOImpl(@Qualifier("AisSessionFactory") SessionFactory factory) {
super.setSessionFactory(factory);
}
Ticket ticket = new Ticket();
ticket.setId(ticketId);
ticket.setLoginID(userName);

getHibernateTemplate().save(ticket);

其中Ticket 是对应的javabean

一直都能正常执行,今天新搭了个环境就出错了,同样的代码在其他环境没问题
...全文
1041 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdh0226 2012-06-07
  • 打赏
  • 举报
回复
getHibernateTemplate().save(ticket);
在执行这条语句之前ticket里面都还有数据的,但是一执行getHibernateTemplate就出错了,不止save,就是只查询都出错
r280881872 2012-06-07
  • 打赏
  • 举报
回复
应该是
javabean中的javabean 为null
造成的,
java.sql.BatchUpdateException: ORA-01400: 无法将 NULL 插入 ("AIS"."T_SYS_TICKET"."LOGIN_ID")

这句也可看出,有为null的。
hibernate 会自动保存对象的,包括对象中的对象。

cdh0226 2012-06-07
  • 打赏
  • 举报
回复
对数据库的操作,用jdbc都能正常执行,但是采用Hibernate就报这个错
cdh0226 2012-06-07
  • 打赏
  • 举报
回复
顶上来啊,求解。。。
cdh0226 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

表 级联 了 可能,主附表 有嵌套, 看主要的 java bean 内有无其他java bean就能看出来了。。
[/Quote]

javabean中有其他的javabean,但是插入数据的时候没有用到关联的那个字段
应该不是数据库的问题,我用另外正常的环境连这同一个库的时候是能正常执行的
是不是环境上有哪需要设置之类的?
ladybirds2008 2012-05-29
  • 打赏
  • 举报
回复
表 级联 了 可能,主附表 有嵌套, 看主要的 java bean 内有无其他java bean就能看出来了。。
小泥巴bro 2012-05-29
  • 打赏
  • 举报
回复
由于是分步执行了删除操作所以遇到了数据完成性异常。
用于删除的当前数据和其他表中的数据有关联,则也会报该异常,请检查您数据库中关于当前表的关系。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧