java - Hibernate 相当于 getTimestamp() 和 getInt()

标签 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 语句。任何帮助将不胜感激!

最佳答案

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 数组时涉及的样板代码。

关于java - Hibernate 相当于 getTimestamp() 和 getInt(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31505834/

相关文章:

java - 如何创建一个循环将堆栈放入 string[] 中?

mysql - 具有多个 where 子句和组的多重选择

mysql - 合并 SQL 中同一列的行

sql - Oracle 的加号 (+) 表示法和 ansi JOIN 表示法之间的区别?

sql - 从文件名中删除扩展名

java - 尝试从命令提示符运行 java 文件,出现错误

java - 在java自定义验证中访问JSF输入字段的最大长度

java - 所有不可变对象(immutable对象)都可以重用吗?

PHP - 无法加载动态库 '/usr/lib64/php/modules/

mysql - sql检查列是否是另一列的子字符串