Hibernate 相当于 getTimestamp() 和 getInt()
Hibernate equivalent of getTimestamp() and getInt()
我目前正在使用 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 语句。如有任何帮助,我们将不胜感激!
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
,特别是如果它可以为 null)。
您可能还想查看 constructor invocation from HQL,因为它有助于减少将投影列表示为 Object
数组时涉及的样板代码。
我目前正在使用 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 语句。如有任何帮助,我们将不胜感激!
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
,特别是如果它可以为 null)。
您可能还想查看 constructor invocation from HQL,因为它有助于减少将投影列表示为 Object
数组时涉及的样板代码。