2017-05-26 42 views
0

的SQLQuery演员阵容异常更新休眠后3至5冬眠这是我的代码的SQLQuery演员阵容异常冬眠5

public List<List<String>> getReportQuery(String query) { 

    Session sess = getSessionFactory().getCurrentSession(); 
    final List<List<String>> table = new ArrayList<List<String>>(); 

    sess.beginTransaction(); 

    SQLQuery it = sess.createSQLQuery(query); 

    table.add(it.list()); 
    return table; 
} 

相同的代码工作在休眠3,但不处于休眠5,我试图将其转换为字符串一样,

List<String> res = it.list(); 
    for(String s : res){ 
     List<String> temp = new ArrayList<String>(); 
     temp.add(s); 
     table.add(temp); 
    } 
} 

但同样的异常发生,

[Ljava.lang.Object; cannot be cast to java.lang.String 

回答

0

我通过将it.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);添加到我的查询实例中解决了该问题。 这将转换结果集地图

工作代码,

public List<List<String>> getReportQuery(String query) { 

     Session sess = getSessionFactory().getCurrentSession(); 
     final List<List<String>> table = new ArrayList<List<String>>(); 
     sess.beginTransaction(); 

     SQLQuery it = sess.createSQLQuery(query); 
     it.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE); 
     List<Map<String,Object>> result = it.list(); 

     for(Map<String,Object> k : result){ 
      final List<String> tmp = new ArrayList<String>(); 

      for(Entry<String,Object> entry : k.entrySet()) 
       tmp.add(entry.getValue() != null ? entry.getValue().toString() : null); 

      table.add(tmp); 
     } 
}