Hibernate3 返回查询结果为Map时 ,有的字段只返回第一位字符?

       Hibernate3 返回查询结果为Map时 ,有的字段只返回第一位字符?返回结果,HashMap KEY DM ,VALUE 总把结果截断,返回第一个字符。

 

  1. public static List geDmList(){
  2.             JbpmConfiguration jbpmConfiguration = JbpmFactory.createJbpmConfiguration();
  3.             JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
  4.                  List result = null;
  5.                     try {
  6.                       Query query  = jbpmContext.getSession().createSQLQuery("select dm,mc from t_dm").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
  7.                       System.err.println("dm="+((HashMap)result.get(0)).get("DM"));
  8.                       result = query.list();
  9.                     } catch (Exception e) {
  10.                       throw new JbpmException("errmsg", e);
  11.                     } finally {
  12.                             jbpmContext.close();
  13.                     }
  14.                     return result;        
  15.     }

"select dm,mc from t_dm"

改为:

"select cast(dm as varchar2(10)) dm,mc from t_dm"

 

经过测试:

       在oracle或sqlServer下会遇到,查询数据表字段类型为char,如果使用Hibernate原生SQL去执行查询,往往只会返回一个字符.原因是char在java中只有两个字节。

 

解决方法

1.改成

   select cast(列 as varchar2(列大小)) from 表;或者改为 select trim(列) from 表

 

2.指定列返回的类型.

SQLQuery query = session.createSQLQuery(); 

query.addScalar(columnAlias,Type);

 


 

转载:

http://www.itpub.net/forum.php?mod=viewthread&tid=1610132

http://blog.youkuaiyun.com/FZfeng/article/details/5875964

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值