【问题标题】:Hibernate equivalent of getTimestamp() and getInt()相当于 getTimestamp() 和 getInt() 的休眠
【发布时间】:2015-10-08 22:42:41
【问题描述】:

我目前正在使用 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 是一个选择语句。任何帮助将不胜感激!

【问题讨论】:

    标签: java mysql sql hibernate hql


    【解决方案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 数组时所涉及的样板代码。

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多