实体BEAN在保存时String类型的字段最长不能超过1000个字节?

mm_hotsky 06-01-16



前端JSP页面上有个文本域接收用户输入的备注信息(已经限制备注的最大长度
, 最长不超过数据库备注字段的长度2000), 提交之后在Action
中做一下处理, 将其从ActionForm中复制到DTO中, 然后在会话Bean中引用
实体Bean对其进行保存.

我发现如果用户输入的备注信息过长(超过1000个字节), 在保存的时候后台会报出
java.sql.SQLException: ORA-01483: DATE 或 NUMBER 赋值变量的长度无效
的错误, 如果不超过1000个字节则不会报错

在网上搜了一下, 说Oracle的varchar2字段的最大长度不能超过4000字节,
否则就会抛出上面所说的错误, 难道是这个原因造成的? 可是我在备注文本域中
只输入了1000字节的内容, EJB容器是不是把备注内容转成Unicode的? 这是第一个问题

这个问题我目前的解决方法是不让实体Bean保存备注字段的内容,
然后在Action中开jdbc连接来专门更新备注字段, 这样问题倒是解决了, 但这样的解决
方式也忒笨了, 不知道大家有更好的办法没有? 这是第二个问题

不知道我这样说大家明白不明白?


我的开发环境:
JbuilderX
Weblogic8.1.5
Oracle9i
Struts1.2.7