Hibernate相当于getTimestamp()和getInt()

时间:2015-07-19 20:54:50

标签: java mysql sql hibernate hql

我目前正在使用ResultSet但希望切换到Hibernate查询。

我有这段代码:

Statement stmt = nfCon.createStatement();
stmt = nfCon.createStatement();
ResultSet foo = stmt.executeQuery(sql);

String str = " " + foo.getTimestamp("time").getTime()  + ", " + foo.getInt("len");

如果我使用

,我该如何更改呢?
Query query = session.createQuery(hql);
List<String> list = query.list(); 

显然,我做不到list.getTimestamp("time");。我的SQL / HQL是一个select语句。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

select xxx as time, yyy as len from zzz where ...

List<Object[]> list = query.list(); 

for (Object[] row : list) {
   Date date = (Date) row[0];
   int len = ((Number) row[1]).intValue();
   String str = " " + date.getTime()  + ", " + len;
}

这是一般解决方案。如果len是实体的映射整数字段,那么您可以将其直接强制转换为int(或更好Integer,特别是如果它可以为空)。

您可能还想查看constructor invocation from HQL,因为它有助于减少将投影列表示为Object数组时所涉及的样板代码。