Hibernate自定义数据类型错误

转自: http://hi.baidu.com/boyboy110/item/1e06d5df1af5384eddf9be13

看了一天的Hibernate自定义数据类型,报了三个错。

        错误一:Could not determine type for: bean.EMailList, for columns: [org.hibernate.mapping.Column(email)]

        错误原因:EMailList,是我自己定义的一个类,email是数据库表的一个字段。报这个错的原因是EMailList类没有序列化。

        解决方法:将     public class EMailList implements EmpType {

                         改为 public class EMailList implements EmpType,Serializable {

                         就可以了。

       

       错误二:org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.Short, got class java.lang.Integer

       错误原因:是字段的数据类型匹配错误。我刚开始以为是hbm文件中字段的type属性配错了,但是hbm文件是自动生成的,不应该有问题。后来发现,是在执行方法时,将一个short类型的参数定义成了Integer。这里emp表主键的字段类型我定义为short。

       解决方法:将 Emp emp = (Emp) session.load(Emp.class, new Integer("7369"));

                         改为 Emp emp = (Emp) session.load(Emp.class, new Short("7369"));

       错误三:org.hibernate.type.SerializationException: could not deserialize

       错误描述:在执行save方法后,我原本要插入的数据是“”,但是进入数据库后,值编程了“ACED0005737200136..”的字符串。并且在query时,会报上述错误。如果我将hbm中关于

        <property name="email" type="bean.EMailList">
            <column name="email" length="300" />
        </property>

       注释掉,就没有问题。

       问题没有解决。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值