gpt4 book ai didi

java - 如何转换 Spring Data JPA 查询返回的 [Ljava.lang.Object

转载 作者:行者123 更新时间:2023-11-30 03:45:15 26 4
gpt4 key购买 nike

嗨,我正在使用 spring data jpa 的 spring mvc 项目中工作,我在从 JpaRepository 扩展的接口(interface)中有一个 nativeQuey,在该查询中,我从不同的表中选择一些值,然后返回一个

ArrayList<Object>

我打印了该 ArrayList 的值,它的内容是:

[[Ljava.lang.Object;@1f634fe, [Ljava.lang.Object;@1361a15, [Ljava.lang.Object;@1c8c51c]

由于查询返回 3 行,每行有 7 个值,我怀疑这些对象是 3 个(列表),每个列表有 7 个字段,我非常确定它们是字符串和整数,我的类中有这两个导入我想要在哪里转换值。

import java.util.ArrayList;
import java.lang.Object;

我的问题是如何转换这些包含 3 个 listw 的列表来获取我的值?

这是我扩展 JpaRepository 的类

import java.util.ArrayList;
import java.lang.Object;
public interface I_GL_JE_Lines extends JpaRepository<C_GL_JE_LINES, Long>{

@Query(value ="select value1, value2, value3, value4, value5"
+ "from DB_Table, DB_Table2, DB_Table3"
+ "where id_value = 1 ",
nativeQuery = true)
public ArrayList<Object> queryWithValues();

我的服务类 MyServiceClass.java 中的方法:

import java.util.ArrayList;
import java.lang.Object;


public ArrayList<Object> getQueryValues() {

ArrayList<Object> results = null;

results = serviceAutoWiredVariable.queryWithValues();

return results;
}

以及我尝试获取值的 Controller 类

@Autowired MyServiceClass_autoWiredServiceClassVariable;

@RequestMapping(value = "/getVaules", method = RequestMethod.GET)
public String getValues(Model model)
{
ArrayList<Object> objectlist = null;

objectlist = _autoWiredServiceClassVariable.getQueryValues(); <--i call my method here and it return the lists that have 3 lists inside with 7 or more values each

.... HERE i want an idea how to get those values or how to cast them

//i tried this but i gives me this exception
//java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.ArrayList


Iterator itr = objectlist .iterator();
Iterator innerIterator;
while(itr.hasNext())
{
ArrayList<Object> obj = (ArrayList<Object>) itr.next();

innerIterator= obj.iterator();

while(iteradorInterno.hasNext())
{
Object[] innerObj = (Object[]) innerIterator.next();

value = String.valueOf(innerObj[0]);
}

}

这一行:

ArrayList<Object> obj = (ArrayList<Object>) itr.next(); 

给了我这个异常:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.ArrayList

最佳答案

Object[] 不能转换为任何其他类型(Object 除外)。期间。

如果您希望 Object[] 实例可用作列表,那么您需要将它们复制到新的 List 对象,或者使用 Arrays 包装它们.asList().

<小时/>

另一种方法(理论上!)是说服 JPA 将结果集中的行映射到 Object[] 之外的其他内容。然而,我的(有限的)研究并没有揭示一种方法......至少,使用 Spring-data @Query 注释。

关于java - 如何转换 Spring Data JPA 查询返回的 [Ljava.lang.Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25921699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com