论坛首页 Java企业应用论坛

一个很奇怪的问题!!

浏览 9706 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-03-18  
当我保存一个对象到mysql中时,用户session.save(对象),对象一些属性来自一个表单,当表单中的输入的是英文提交时,可以成功去写入数据库中去,如果是中文,在JBX下则会出现下面的错误:
type Exception report

message Internal Server Error

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: String index out of range: 4
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
   发表时间:2004-03-18  
这和hibernate应该没什么关系
找出这个ServletException的cause
0 请登录后投票
   发表时间:2004-03-18  
那为什么中文会出错呢?
0 请登录后投票
   发表时间:2004-03-19  
无论在jb下还是在tomcat下都有这个问题,
下面的出错信息应该详细一些,应该是hibernate方面的问题吧:
java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:444)
at com.mysql.jdbc.StringUtils.escapeSJISByteStream(StringUtils.java:280)
at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:105)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:1068)
at net.sf.hibernate.type.StringType.set(StringType.java:26)
at net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:48)
at net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:35)
at net.sf.hibernate.persister.EntityPersister.dehydrate(EntityPersister.java:393)
at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:526)
at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:432)
at net.sf.hibernate.impl.ScheduledIdentityInsertion.execute(ScheduledIdentityInsertion.java:29)
at net.sf.hibernate.impl.SessionImpl.doSave(SessionImpl.java:906)
at net.sf.hibernate.impl.SessionImpl.doSave(SessionImpl.java:839)
at net.sf.hibernate.impl.SessionImpl.saveWithGeneratedIdentifier(SessionImpl.java:757)
at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:720)
0 请登录后投票
   发表时间:2004-03-19  
应该是数据库种有个字段长度是4吧,你中文输入一个试一试
0 请登录后投票
   发表时间:2004-03-19  
不是的,我把所有的字段长度设为255还是那样,另一个奇怪的问题是有的中文可以正常写入,如"国语",另一个如"管理"写入就会出错。
0 请登录后投票
   发表时间:2004-03-20  
经过多次的检查,发现是
?useUnicode=true&characterEncoding=gbk的问题,
去掉了这部分,一切正常,我用的mysql的jdbc包是
mysql-connector-java-3.0.11-stable-bin.jar,不知道大家有什么好的解决方法?
0 请登录后投票
   发表时间:2004-03-20  
about mysql config!
0 请登录后投票
   发表时间:2004-03-23  
是mysql-connector-java-3.0.11-stable-bin.jar 的问题,
http://forum.iteye.com/viewtopic.php?t=3513&highlight=mysql有详细解答。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics