Hibernate 对应 getTimestamp() 和 getInt() 的方法是什么?

3

我目前正在使用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个回答

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,特别是如果它是可空的)。
您可能还想查看HQL中的构造函数调用,因为它可以帮助减少在表示投影列为Object数组时涉及的样板代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接