首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

一个关于Hibernate执行SQL的有关问题

2012-05-20 
一个关于Hibernate执行SQL的问题String sql SELECT ts.LIFNR, se.EMAIL,se.SID from T_SUPPLIER ts LEF

一个关于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就行了。

热点排行