oracle hibernate update,hibernate 更新 oracle 的 date 型字段会造成宕机问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这个应该是hibernate 的严重的bug.

经过试验,已经能够得出结论:

hibernate 3 对 oracle 表的date 型字段执行 update 操作的时候,会造成严重的宕机问题.

代码如下:

obj.setOrderTime(new Date());

weblogic 表现的错误如下:

org.hibernate.TransactionException: JDBC rollback failed

at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.ja

va:142)

at jsp_servlet._jsp._test.__dump._jspService(__dump.java:150)

at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)

at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run

(ServletStubImpl.java:996)

at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm

pl.java:419)

at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm

pl.java:315)

at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio

n.run(WebAppServletContext.java:6456)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate

dSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:

118)

at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe

rvletContext.java:3661)

at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm

pl.java:2630)

at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)

at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

Caused by: java.sql.SQLException: 关闭的连接

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java

:125)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java

:162)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java

:227)

at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.jav

a:994)

at weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection

.rollback(Unknown Source)

at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.ja

va:134)

解决办法:

1.数据库表不要用date 类型,而要用timestamp(6).

2.执行update 操作的java语句采用如下方式:

CaUtil cautil = new CaUtil();

obj.setOrderTime(cautil.formatDateForHibernate(new Date()));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值