[英]Hibernate native query return List Object List
我正在使用一个休眠NQL查询,该查询为我提取了两列:
SELECT object_name,
object_name_location
FROM dbo.object_stacks
WHERE object_id IN (SELECT thumb_nail_obj_id
FROM dbo.uois
WHERE Upper(NAME) LIKE Upper('%testobj%'))
当我仅选择一列,即仅选择对象名称时,一切正常,但是在两列中却出现错误
java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为java.lang.String
在运行时,当我尝试显示列表中的结果时。 我也尝试在列表中使用String数组,但是它不起作用。 下面是我的代码片段,给出错误:
当我只使用List时:
List<String> Thumbnailpaths = pathquery.list();
System.out.println(Thumbnailpaths.get(i).replace("\\", "\\\\"));
编译时没有错误,如果保持原样也没有任何问题,但显示的上方行显示classcast异常。
当我使用列表数组时:
List<String[]> Thumbnailpaths = pathquery.list();
System.out.println(Thumbnailpaths.get(i)[0].replace("\\", "\\\\"));
在运行时再次出现类广播异常
而且Criteria.ALIAS_TO_ENTITY_MAP
完全没有帮助,因为它使逻辑变得更加复杂。 我只需要数据库表中的2列值。
请让我知道是否有任何解决方案可以在NQL中获取多列结果,然后放入列表中。
注意:看起来这里没有显示泛型,而我的代码段中只写了List
是的,在这种情况下,休眠将返回对象数组(Object [])-返回多列。 但是您仍然可以使用“实体查询”返回实体对象,而不是“原始”值。
不幸的是,Hibernate没有提供检索表列结果并将其直接存储到Entity Object的标准方法。您必须手动解析查询所获取的数据。
休眠查询将返回对象数组列表,即List<Object[]>
。 Object[]
将包含您列中的数据。 列表不过是查询检索的行。 您可以参考以下代码:
List<Object[]> Thumbnailpaths = pathquery.list();
for(Object[] objArr : Thumbnailpaths)
{
String objName = (String)objArr[0];
String objNameLocation = (String)objArr[1];
System.out.println(objName + " : " +objNameLocation);
}
上面的代码将帮助您解析object[]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.