最近碰到一个问题,如下:
我用hibernate框架封装dao层,现在有一条select语句:
select userid, 'User_type ' as utype, usertype from user where userid= '001 ';
这条语句在数据库工具中运行是没有问题的,但是在程序中就有问题了,查询出来的常量字符 'User_type ',这部分只显示U,即常量字符的第一个字符。
实现程序如下:
String sql = "select userid, 'User_type ', usertype from user where userid= '001 ' ";
Session session = SessionFactory.getSession();
Query query = session.createSQLQuery(sql);
Iterator it = query.list().iterator();
while (it.hasNext()){
Object[] objects=it.next();
System.out.println(String.valueOf(objects[1]));//本来应该输出User_type 但是实际上是打印出U
}
调试了一天也没整出个道道来,么有办法,只能换个方法实现了:
Connection conn = session.connection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next){
String str = rs.getString("UTYPE");//打印出来User_type 符合要求
}
还没有找到真正的问题所在,目前只能用这种方法了。