String sql = "SELECT ts.LIFNR, se.EMAIL,se.SID from T_SUPPLIER ts LEFT OUTER JOIN T_SUPPLIEREMAIL se ON ts.LIFNR = se.LIFNR where 1 = 1";Session session = HibernateUtil.currentSession();//自己封装的Hibernate实体
SQLQuery query2 = session.createSQLQuery(sql);
query2.setFirstResult(offset);
query2.setMaxResults(length);
List<Object[]> list = query2.list();
for(Object[] o: list){
System.out.print(o[0] + "-");
System.out.print(o[1] + "-");
}打印出来的结果是:南[email protected]
而数据库实际LIFNR字段的值为:南京而且我随便查哪个单表也只会显示第一个字符,但是如果查T_SUPPLIEREMAIL 表数据就可以全部显示。这是什么问题?
而且原生SQL查询应该也和hibernate的配置无关吧?即使有关我用HQL语句进行单表查询也没有问题。封装的实体和SQL语句都没有问题,可以正常运行,数据库为sqlserver2000

解决方案 »

  1.   

    你这个LIFNR字段是不是char类型?我碰到过char类型的字段会只取第一个字符的情况。select的时候转换成varchar就行了。
      

  2.   

    楼上的你应该早出现的,就是这个问题。当初搞了一晚上才追踪到这个问题,后面需要用的字段全部改为varchar就没问题了。我都纳闷为啥char字段会有这个情况出现,求解?