日期 报错问题 怎么解决?? 求大神 急 Data truncation: Incorrect datetime value

文刀一撇 2016-04-22 03:30:14
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:181)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
at com.service.MemServiceImpl.updateMember(MemServiceImpl.java:129)
at com.struts.action.CartAction.submitOrder(CartAction.java:227)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

Caused by: java.sql.BatchUpdateException: Data truncation: Incorrect datetime value: '' for column 'LastDate' at row 1
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:656)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1722)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
...全文
9408 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
文刀一撇 2016-04-25
  • 打赏
  • 举报
回复
引用 14 楼 qnmdcsdn 的回复:
[quote=引用 13 楼 u013411178 的回复:] 那我向对象里塞值得时候 怎么 塞timestamp的类型的数据 比如说 当前时间 new Date()怎么变成时间戳类型
http://blog.csdn.net/vipzyj/article/details/8721644 这个你看过了没,试试[/quote] 这个看过不是这个问题,我的jar包是5.1.29的
  • 打赏
  • 举报
回复
引用 13 楼 u013411178 的回复:
那我向对象里塞值得时候 怎么 塞timestamp的类型的数据 比如说 当前时间 new Date()怎么变成时间戳类型
http://blog.csdn.net/vipzyj/article/details/8721644 这个你看过了没,试试
文刀一撇 2016-04-22
  • 打赏
  • 举报
回复
那我向对象里塞值得时候 怎么 塞timestamp的类型的数据 比如说 当前时间 new Date()怎么变成时间戳类型
文刀一撇 2016-04-22
  • 打赏
  • 举报
回复
引用 11 楼 qnmdcsdn 的回复:
[quote=引用 10 楼 u013411178 的回复:] [quote=引用 9 楼 qnmdcsdn 的回复:] [quote=引用 7 楼 u013411178 的回复:] Hibernate打印语句: Hibernate: select cart0_.ID as ID, cart0_.Money as Money5_, cart0_.CartStatus as CartStatus5_, cart0_.Member as Member5_ from db_eshop.cart cart0_ where (cart0_.Member=? )and(cart0_.CartStatus=0 ) limit ? Hibernate: select member0_.ID as ID0_, member0_.LoginName as LoginName9_0_, member0_.LoginPwd as LoginPwd9_0_, member0_.MemberName as MemberName9_0_, member0_.Phone as Phone9_0_, member0_.Address as Address9_0_, member0_.Zip as Zip9_0_, member0_.RegDate as RegDate9_0_, member0_.LastDate as LastDate9_0_, member0_.LoginTimes as LoginTimes9_0_, member0_.EMail as EMail9_0_, member0_.Memberlevel as Memberl12_9_0_ from db_eshop.member member0_ where member0_.ID=? Hibernate: select memberleve0_.ID as ID0_, memberleve0_.LevelName as LevelName0_0_, memberleve0_.Favourable as Favourable0_0_ from db_eshop.memberlevel memberleve0_ where memberleve0_.ID=?
这些都是查询语句,没有更新语句吧[/quote] Hibernate: update db_eshop.member set LoginName=?, LoginPwd=?, MemberName=?, Phone=?, Address=?, Zip=?, RegDate=?, LastDate=?, LoginTimes=?, EMail=?, Memberlevel=? where ID=?[/quote] 那你在更新之前打个断点,看一下RegDate和LastDate有没有什么区别[/quote] RegDate是timestamp类型 LastDate是date 类型 ,那我向对象里塞值得时候 可以塞timestamp的类型
  • 打赏
  • 举报
回复
引用 10 楼 u013411178 的回复:
[quote=引用 9 楼 qnmdcsdn 的回复:] [quote=引用 7 楼 u013411178 的回复:] Hibernate打印语句: Hibernate: select cart0_.ID as ID, cart0_.Money as Money5_, cart0_.CartStatus as CartStatus5_, cart0_.Member as Member5_ from db_eshop.cart cart0_ where (cart0_.Member=? )and(cart0_.CartStatus=0 ) limit ? Hibernate: select member0_.ID as ID0_, member0_.LoginName as LoginName9_0_, member0_.LoginPwd as LoginPwd9_0_, member0_.MemberName as MemberName9_0_, member0_.Phone as Phone9_0_, member0_.Address as Address9_0_, member0_.Zip as Zip9_0_, member0_.RegDate as RegDate9_0_, member0_.LastDate as LastDate9_0_, member0_.LoginTimes as LoginTimes9_0_, member0_.EMail as EMail9_0_, member0_.Memberlevel as Memberl12_9_0_ from db_eshop.member member0_ where member0_.ID=? Hibernate: select memberleve0_.ID as ID0_, memberleve0_.LevelName as LevelName0_0_, memberleve0_.Favourable as Favourable0_0_ from db_eshop.memberlevel memberleve0_ where memberleve0_.ID=?
这些都是查询语句,没有更新语句吧[/quote] Hibernate: update db_eshop.member set LoginName=?, LoginPwd=?, MemberName=?, Phone=?, Address=?, Zip=?, RegDate=?, LastDate=?, LoginTimes=?, EMail=?, Memberlevel=? where ID=?[/quote] 那你在更新之前打个断点,看一下RegDate和LastDate有没有什么区别
文刀一撇 2016-04-22
  • 打赏
  • 举报
回复
引用 9 楼 qnmdcsdn 的回复:
[quote=引用 7 楼 u013411178 的回复:] Hibernate打印语句: Hibernate: select cart0_.ID as ID, cart0_.Money as Money5_, cart0_.CartStatus as CartStatus5_, cart0_.Member as Member5_ from db_eshop.cart cart0_ where (cart0_.Member=? )and(cart0_.CartStatus=0 ) limit ? Hibernate: select member0_.ID as ID0_, member0_.LoginName as LoginName9_0_, member0_.LoginPwd as LoginPwd9_0_, member0_.MemberName as MemberName9_0_, member0_.Phone as Phone9_0_, member0_.Address as Address9_0_, member0_.Zip as Zip9_0_, member0_.RegDate as RegDate9_0_, member0_.LastDate as LastDate9_0_, member0_.LoginTimes as LoginTimes9_0_, member0_.EMail as EMail9_0_, member0_.Memberlevel as Memberl12_9_0_ from db_eshop.member member0_ where member0_.ID=? Hibernate: select memberleve0_.ID as ID0_, memberleve0_.LevelName as LevelName0_0_, memberleve0_.Favourable as Favourable0_0_ from db_eshop.memberlevel memberleve0_ where memberleve0_.ID=?
这些都是查询语句,没有更新语句吧[/quote] Hibernate: update db_eshop.member set LoginName=?, LoginPwd=?, MemberName=?, Phone=?, Address=?, Zip=?, RegDate=?, LastDate=?, LoginTimes=?, EMail=?, Memberlevel=? where ID=?
  • 打赏
  • 举报
回复
引用 7 楼 u013411178 的回复:
Hibernate打印语句: Hibernate: select cart0_.ID as ID, cart0_.Money as Money5_, cart0_.CartStatus as CartStatus5_, cart0_.Member as Member5_ from db_eshop.cart cart0_ where (cart0_.Member=? )and(cart0_.CartStatus=0 ) limit ? Hibernate: select member0_.ID as ID0_, member0_.LoginName as LoginName9_0_, member0_.LoginPwd as LoginPwd9_0_, member0_.MemberName as MemberName9_0_, member0_.Phone as Phone9_0_, member0_.Address as Address9_0_, member0_.Zip as Zip9_0_, member0_.RegDate as RegDate9_0_, member0_.LastDate as LastDate9_0_, member0_.LoginTimes as LoginTimes9_0_, member0_.EMail as EMail9_0_, member0_.Memberlevel as Memberl12_9_0_ from db_eshop.member member0_ where member0_.ID=? Hibernate: select memberleve0_.ID as ID0_, memberleve0_.LevelName as LevelName0_0_, memberleve0_.Favourable as Favourable0_0_ from db_eshop.memberlevel memberleve0_ where memberleve0_.ID=?
这些都是查询语句,没有更新语句吧
文刀一撇 2016-04-22
  • 打赏
  • 举报
回复
引用 6 楼 qnmdcsdn 的回复:
[quote=引用 5 楼 u013411178 的回复:] [quote=引用 3 楼 qnmdcsdn 的回复:] 设置的时候不是日期类型?
是日期类型 mysql数据库是datetime bt对象里是 private Date LastDate;[/quote] 你执行批量更新的时候是怎么执行的?上边那个跟这个日期配置是一样的,只有这个出错了,应该不是配置的问题而是数据的问题吧[/quote] public boolean updateMember(Member member) throws Exception { Session session = MySessionFactory.getSession(); Transaction tx = null; boolean result = false; try{ tx = session.beginTransaction(); session.update(member); tx.commit(); result=true; }catch(Exception ex){ // if(tx!=null)tx.rollback(); logger.info("在执行MemServiceImpl类中的updateMember方法时出错:\n"); ex.printStackTrace(); }finally{ MySessionFactory.closeSession(); } return result; }
文刀一撇 2016-04-22
  • 打赏
  • 举报
回复
Hibernate打印语句: Hibernate: select cart0_.ID as ID, cart0_.Money as Money5_, cart0_.CartStatus as CartStatus5_, cart0_.Member as Member5_ from db_eshop.cart cart0_ where (cart0_.Member=? )and(cart0_.CartStatus=0 ) limit ? Hibernate: select member0_.ID as ID0_, member0_.LoginName as LoginName9_0_, member0_.LoginPwd as LoginPwd9_0_, member0_.MemberName as MemberName9_0_, member0_.Phone as Phone9_0_, member0_.Address as Address9_0_, member0_.Zip as Zip9_0_, member0_.RegDate as RegDate9_0_, member0_.LastDate as LastDate9_0_, member0_.LoginTimes as LoginTimes9_0_, member0_.EMail as EMail9_0_, member0_.Memberlevel as Memberl12_9_0_ from db_eshop.member member0_ where member0_.ID=? Hibernate: select memberleve0_.ID as ID0_, memberleve0_.LevelName as LevelName0_0_, memberleve0_.Favourable as Favourable0_0_ from db_eshop.memberlevel memberleve0_ where memberleve0_.ID=?
文刀一撇 2016-04-22
  • 打赏
  • 举报
回复
引用 3 楼 qnmdcsdn 的回复:
设置的时候不是日期类型?
是日期类型 mysql数据库是datetime bt对象里是 private Date LastDate;
  • 打赏
  • 举报
回复
引用 5 楼 u013411178 的回复:
[quote=引用 3 楼 qnmdcsdn 的回复:] 设置的时候不是日期类型?
是日期类型 mysql数据库是datetime bt对象里是 private Date LastDate;[/quote] 你执行批量更新的时候是怎么执行的?上边那个跟这个日期配置是一样的,只有这个出错了,应该不是配置的问题而是数据的问题吧
文刀一撇 2016-04-22
  • 打赏
  • 举报
回复
配置文件 <hibernate-mapping> <class name="com.ORM.Member" table="member" catalog="db_eshop"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="identity" /><!-- --> </id> <property name="loginName" type="java.lang.String"> <column name="LoginName" length="12" /> </property> <property name="loginPwd" type="java.lang.String"> <column name="LoginPwd" length="12" /> </property> <property name="memberName" type="java.lang.String"> <column name="MemberName" length="20" /> </property> <property name="phone" type="java.lang.String"> <column name="Phone" length="15" /> </property> <property name="address" type="java.lang.String"> <column name="Address" length="100" /> </property> <property name="zip" type="java.lang.String"> <column name="Zip" length="10" /> </property> <property name="regDate" type="java.util.Date"> <column name="RegDate" length="19" /> </property> <property name="lastDate" type="java.util.Date"> <column name="LastDate" length="19" /> </property> <property name="loginTimes" type="java.lang.Integer"> <column name="LoginTimes" /> </property> <property name="email" type="java.lang.String"> <column name="EMail" length="100" /> </property> <!--映射Member到Memberlevel的多对一单向关联--> <many-to-one name="memberlevel" column="Memberlevel" class="com.ORM.Memberlevel" lazy="false" not-null="true"/> <!--映射Member到Orders的一对多关联--> <set name="orders" cascade="all" inverse="true" lazy="true"> <key column="Member" /> <one-to-many class="com.ORM.Orders" /> </set> </class>
  • 打赏
  • 举报
回复
设置的时候不是日期类型?
jollroy 2016-04-22
  • 打赏
  • 举报
回复
把你的配置文件贴出来看看。 还有把hibernate的打印语句贴出来看看 LastDate这个字段存进去的时候是多少
自由的刺猬 2016-04-22
  • 打赏
  • 举报
回复

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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