日期:2014-05-19  浏览次数:20694 次

一个关于Hibernate执行SQL的问题
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] + "-");
}

打印出来的结果是:南-test@123.com-
而数据库实际LIFNR字段的值为:南京

而且我随便查哪个单表也只会显示第一个字符,但是如果查T_SUPPLIEREMAIL 表数据就可以全部显示。这是什么问题?
而且原生SQL查询应该也和hibernate的配置无关吧?即使有关我用HQL语句进行单表查询也没有问题。

封装的实体和SQL语句都没有问题,可以正常运行,数据库为sqlserver2000

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