使用hibernate映射应注意的一个问题

数据库字段定义为char(13),hibernate映射文件定义为:
        <id name="isbn" type="java.lang.String">
            <column name="ISBN" length="13" />
            <generator class="assigned" />
        </id>
当我要将isbn取出显示在下拉列表中时,怪问题来了,显示的总是isbn的第一个数字,明明isbn有十几个数字,但是却只显示了一个数字,开始我还以为是在那些daos,services中定义的方法返回类型不对导致的,检查一遍后发现都是对的,没办法,只能使用最笨的方法,将存放isbn的list对象全都打印出来看看,
public String detail(){
isbnList=videoService.AllIsbn();
shopList=shopService.getShopList();
for(int i=0;i<isbnList.size();i++){
System.err.println(isbnList.get(i).toString()+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}
return SUCCESS;
}
重启服务器,运行下,悲剧了,报错了! java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.String
网上百度了下,发现原来是数据库字段定义的问题,解决方法如下:方法一:在sql代码中加入如下转换函数即可:select cast(isbn as varchar(13)) from video ,将isbn的类型转换为varchar类型;方法二:直接更改数据库代码,将isbn列的定义改为varchar(13)。改完后试了下,果然ok了,问题解决了!
但是还是有点不解:虽然数据库定义的字段为char(13),但是hibernate映射文件已经将该类型映射为了String类型啊,hql语句取数据的时候应该也会将类型转为String类型啊,为啥转换不过来呢???求解!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值