我是hibernate的新手,我正在使用MySQl,Hibernate和Struts的應用程序。對於給定的代碼,我總是得到以下錯誤。我沒有谷歌這個錯誤,但這些線程沒有幫助。總是收到JDBC批量更新錯誤
錯誤
javax.servlet.ServletException: Could not execute JDBC batch update
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
....
代碼
Session session = new HibernateSession().currentSession(this.getServlet().getServletContext());
if(auctionform.getId() == null || auctionform.getId().intValue() == 0){
auction.setId(null);
auctionform.setId(null);
}else{
auction.setId(auctionform.getId());
Criteria criteria = session.createCriteria(Auction.class);
criteria.add(Restrictions.idEq(Integer.valueOf(req.getParameter("id"))));
auction = (Auction) criteria.uniqueResult();
}
Boolean isAuctionActive = false;
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter= new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date auctionEndingDate = DateUtils.getDate(req, "auctionenddate");
Date todaysDate = formatter.parse(formatter.format(currentDate.getTime()));
if(auctionEndingDate.after(todaysDate)){
isAuctionActive = true;
}
auction.setDescription(auctionform.getDescription());
auction.setDate(auctionform.getDate());
auction.setCurrentprice(auctionform.getCurrentprice());
....some code
Attachment attachment1 = AttachmentUtils.saveAttachment(auctionform, session, auction, 0);
Attachment attachment2 = AttachmentUtils.saveAttachment(auctionform, session, auction, 1);
Attachment attachment3 = AttachmentUtils.saveAttachment(auctionform, session, auction, 2);
Transaction transaction = session.beginTransaction();
if(attachment1!=null){
session.save(attachment1.getDbFile());
session.save(attachment1.getThmnailDbFile());
session.save(attachment1);
auction.setFirstimage(attachment1);
}
if(attachment2!=null){
session.save(attachment2.getDbFile());
session.save(attachment2.getThmnailDbFile());
session.save(attachment2);
auction.setSecoundimage(attachment2);
}
if(attachment3 != null){
session.save(attachment3.getDbFile());
session.save(attachment3.getThmnailDbFile());
session.save(attachment3);
auction.setSignimage(attachment3);
}
session.saveOrUpdate(auction);
transaction.commit();
session.flush();
我總是在transaction.commit()
行收到此錯誤。我沒有得到什麼問題。
更新:
我設置log4j的,完整的堆棧跟蹤如下所示。
完整的堆棧跟蹤
Caused by: java.sql.BatchUpdateException: Incorrect string value: '\xE5\x8F\x96\xE3\x82\x8A...' for column 'BIDDERRESTRICTION' at row 1
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:647)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
... 34 more
2012-10-25 17:26:29 [action] [ERROR] Servlet.service() for servlet action threw exception
java.sql.BatchUpdateException: Incorrect string value: '\xE5\x8F\x96\xE3\x82\x8A...' for column 'BIDDERRESTRICTION' at row 1
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:647)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
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 net.startbahn.web.app.PostAuctionVPAction.execute(PostAuctionVPAction.java:175)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at net.startbahn.filters.PrivilegeManageFilter.doFilter(PrivilegeManageFilter.java:112)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at net.startbahn.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:121)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:722)
我想儲存一些日語的東西列,所以我嘗試更新表的排序規則COLLATE = ujis_japanese_ci和UTF-8但仍不影響。
解決方案:
設置表的整理,以及其所有領域UTF8-utf8_bin爲我做的伎倆。
您的日誌記錄功能不是很有用,您能不能減少某些日誌級別(log4j.proerties)。你ma –
@drjerry:我已經更新stacktrace請看看。 –