Java Hibernate本机SQLQuery提取值

Java Hibernate本机SQLQuery提取值,java,hibernate,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 ta

如何从本机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个或更多值?

根据:

以列表形式返回查询结果。如果查询包含多个结果前置行,则结果将在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 query=session.createSQLQuery(“从表名称中选择param1、param2,其中..”);
List List=(List)query.List();//对象[]objs=(对象[])query.uniqueResult()
for(Iterator Iterator=list.Iterator();Iterator.hasNext();){
Object[]e=iterator.next();
String param1=(String)e[0];//由您自己将case对象类型转换为另一个。。。
}

如果您的程序将标量添加到
SQLQuery
,Hibernate可能会像您预期的那样返回匹配对象类型。

仅适用于标量,此示例还会引发ClassCastException。顺便说一句,UnqueryResult可以返回对象[],而不是list@ne1s,您是对的。示例代码用于
query.list()
。我只是编辑它。