返回列表 发帖

[ORM框架] Hibernate中的修改出西西了

Hibernate: select users0_.USERID as USERID15_, users0_.DEPID as DEPID15_, users0_.USERNAME as USERNAME15_, users0_.USERPWD as USERPWD15_, users0_.SEX as SEX15_, users0_.REGTIME as REGTIME15_, users0_.BIRTHTIME as BIRTHTIME15_, users0_.EMAIL as EMAIL15_, users0_.ADDRESS as ADDRESS15_, users0_.PHONE as PHONE15_, users0_.MOBILE as MOBILE15_, users0_.CODING as CODING15_, users0_.PHOTOFILENAME as PHOTOFI13_15_, users0_.USERSTATE as USERSTATE15_ from SCOTT.USERS users0_ where users0_.USERNAME=? and users0_.USERPWD=?
1
a
Hibernate: update SCOTT.USERS set DEPID=?, USERNAME=?, USERPWD=?, SEX=?, REGTIME=?, BIRTHTIME=?, EMAIL=?, ADDRESS=?, PHONE=?, MOBILE=?, CODING=?, PHOTOFILENAME=?, USERSTATE=? where USERID=?
2009-12-16 18:36:00  SQL Error: 1401, SQLState: 23000
2009-12-16 18:36:00  ORA-01401: 插入的值对于列过大

2009-12-16 18:36:00  SQL Error: 1401, SQLState: 23000
2009-12-16 18:36:00  ORA-01401: 插入的值对于列过大

2009-12-16 18:36:00  Could not synchronize database state with session
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:202)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at com.comm.MyInvocationHandler.invoke(MyInvocationHandler.java:25)
        at $Proxy0.updateUsers(Unknown Source)
        at com.serviceimpl.UsersServiceImpl.main(UsersServiceImpl.java:76)
Caused by: java.sql.BatchUpdateException: ORA-01401: 插入的值对于列过大


这个修改我做得也是郁闷呢。根据ID 查出了一个User对象,然后就修改了其中一个字段的值,比方将“张小三”改成”张三“,就出现问题了。而且只有这个类出现这个问题。里面字段的长度足够长。想不通,所以传上来找大伙儿来帮个忙。。。。。

提问赏金:10金币
获奖名单 : gaoyongbo026(5金币)    liuguly(5金币)    

这个问题似乎很常见

这个问题似乎很常见,如果把字符串插入到整型字段中就有这样的错误,应该是你没有把值插入到对应列,看看配置或占位参数有没有错误
拼到底,输赢无所谓

TOP

Hiernate中的得到值是getUsersName()这个方法,然后修改一下setUsersName("aaaaaa"),之前得到的值是“aa”,然后再调用Dao中的修改方法.这个过程中并不要去理针会占位符,配置中是自动生成的.项目中只有这个用户类同现这个问题........

TOP

TOP

如果不能插入中文,你把Oracle的jar包换一下。
这个用10g的jar包可能会有问题。我之间也遇见过,后来换了jar包好了
如果还是不能插入中文,那就是程序的问题或者是编码的问题

TOP

返回列表