Hibernate中insert出错inserted value too large for column

wooh 2005-02-05 11:10:39
数据库:
CREATE TABLE STAFF
(
MEMBER_ID VARCHAR(25) NOT NULL,
DEPARTMENT VARCHAR(25) NOT NULL,
NAME VARCHAR(25) NOT NULL,
SEX VARCHAR(2),
BIRTHDAY DATE,
DEGREE VARCHAR(25),
SPECIALTY VARCHAR(25),
SCHOOL VARCHAR(25),
TITLE VARCHAR(25),
POST VARCHAR(25),
SIGN VARCHAR(25),
CONSTRAINT PK_STAFF PRIMARY KEY (MEMBER_ID)
)

Staff.hbm.xml---------------------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration. -->
<!-- Created Fri Jan 28 15:07:18 CST 2005 -->
<hibernate-mapping package="com.icbc.sdc.kf3.hibernate.humansource">

<class name="Staff" table="STAFF">
<id name="memberId" column="MEMBER_ID" type="java.lang.String">
<generator class="assigned"/>
</id>

<property name="department" column="DEPARTMENT" type="java.lang.String" not-null="true" />
<property name="name" column="NAME" type="java.lang.String" not-null="true" />
<property name="sex" column="SEX" type="java.lang.String" />
<property name="birthday" column="BIRTHDAY" type="java.util.Date" />
<property name="degree" column="DEGREE" type="java.lang.String" />
<property name="specialty" column="SPECIALTY" type="java.lang.String" />
<property name="school" column="SCHOOL" type="java.lang.String" />
<property name="title" column="TITLE" type="java.lang.String" />
<property name="post" column="POST" type="java.lang.String" />
<property name="sign" column="SIGN" type="java.lang.String" />
</class>

</hibernate-mapping>

StaffManager----------------------------------------------------------------------
public class StaffManager {

//更新或增加员工基本记录
public void saveMember(Staff memberValue) {
Session session=null;
Transaction tx=null;

try {
session=HibernateSessionFactory.currentSession();
tx=session.beginTransaction();
Staff member;

if (memberValue.getMemberId()!=null) {
//member=(Staff)session.get(Staff.class,memberValue.getMemberId());
System.out.println("............... READY...!!!!!!!!!!");
//session.update(memberValue);
session.saveOrUpdate(memberValue);
System.out.println("............... DONE...!!!!!!!!!!");
}
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if (tx!=null) try {
tx.rollback();
} catch (HibernateException e1) {
e1.printStackTrace();
}
}finally {
try {
if(session!=null) HibernateSessionFactory.closeSession();
}catch(HibernateException e1) {
e1.printStackTrace();
}
}
}

---------------------------------------
已经校对过值了 没有错 但是会报错ORA-01401:inserted value too large for column
...全文
218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
discolt 2005-02-18
  • 打赏
  • 举报
回复
inserted value too large for column

在数据库中插入了过大的字段,请仔细查找。
sgdb 2005-02-18
  • 打赏
  • 举报
回复
Oracle中汉字的长度跟你的oracle的字符集有关系,使用ASCII一个汉字占2位,ZHS16GBK占一位 utf8占3位
jspxnet 2005-02-17
  • 打赏
  • 举报
回复
在你的xml 中把长度定义上,不同的长度,会对应不同的类型
pigo 2005-02-06
  • 打赏
  • 举报
回复


可能是有中文字符,而中文字符的长度计算各自不同,

java本身字符串是UNICODE,因此一个汉字就算一个字符,
而Oracle中一个汉字算两个字符。postgresql中如果使用UNICODE,那么一个汉字算一个字符,如果使用ASCII字符集,一个汉字就会被算作两个字符。


kingofvc 2005-02-05
  • 打赏
  • 举报
回复
hibernate config 里面设置showsql=true
然后把他执行的那行sql 用实际数据填充手动去oracle里面执行 看看到底什么地方出问题了
wooh 2005-02-05
  • 打赏
  • 举报
回复
长度都没有问题,刚才用MySql试了一下 可以insert数据 但是Oracle就不行
kingofvc 2005-02-05
  • 打赏
  • 举报
回复
memberValue里面所有String类型的属性长度打印出来看看 有没有超过你数据库设置的大小
比如你设定25个字符 ,但是你放入的是26个

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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