有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate相当于getTimestamp()和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(); 

显然,我做不到。我的SQL/HQL是一个select语句。任何帮助都将不胜感激


共 (1) 个答案

  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,尤其是当它可为空时)

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