如何从原生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个或更多值?
答案 0 :(得分:0)
将查询结果作为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 可以按预期返回匹配对象类型。