Hibernate Native SQLQuery提取值

时间:2016-04-30 15:01:26

标签: java hibernate

如何从原生SQLQuery中提取多个值?

SQLQuery query = session.createSQLQuery("SELECT param1, param2 from table_name where ..);

当我使用query.list()query.uniqueResult时,它总是返回Object \ Object的列表,即使我添加了标量,也无法转换为任何内容。 提取单值没有问题:

session.createSQLQuery("SELECT param1 from table_name where ..);
Long result = (Long)query.uniqueResult();

但是如何提取2个或更多值?

1 个答案:

答案 0 :(得分:0)

根据SQLQuery.list() API

  

将查询结果作为List返回。如果查询在前一行包含多个结果,则结果将在Object []

的实例中返回

示例代码:

SQLQuery query = session.createSQLQuery("SELECT param1, param2 from table_name where ..);
List<Object[]> list = (List<Object[]>)query.list();//Object[] objs = (Object[])query.uniqueResult()
for (Iterator<Object[]> iterator = list.iterator(); iterator.hasNext();) {
    Object[] e = iterator.next();
    String param1 = (String)e[0];//case object type to another by youself...
}

如果您的程序将标量添加到SQLQuery Hibernate 可以按预期返回匹配对象类型。