Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将java.sql.array转换为list<;MyClass>;_Java_List_Jdbc_Oracle12c - Fatal编程技术网

如何将java.sql.array转换为list<;MyClass>;

如何将java.sql.array转换为list<;MyClass>;,java,list,jdbc,oracle12c,Java,List,Jdbc,Oracle12c,我正在为我的应用程序编写一些DAO对象,它们与oracle数据库(对象关系数据库)通信。除了代码的这一部分外,一切正常: List<Object>grades = new ArrayList<>(); Array gradesList = (Array)rs.getArray("GRADES"); grades = Arrays.asList(gradesList.getArray()); Listgrades=newArrayList(); 数组等级列表=(数组)r

我正在为我的应用程序编写一些DAO对象,它们与oracle数据库(对象关系数据库)通信。除了代码的这一部分外,一切正常:

List<Object>grades = new ArrayList<>();

Array gradesList = (Array)rs.getArray("GRADES");
grades = Arrays.asList(gradesList.getArray());
Listgrades=newArrayList();
数组等级列表=(数组)rs.getArray(“等级”);
grades=Arrays.asList(gradesList.getArray());

有了这个,我得到了
列表
。我真正需要的是
列表
。我在网上搜索答案,但没有找到。我试图将等级列表中的对象强制转换为for循环,并将它们添加到另一个列表中,但没有成功。你可以把这个列表转换成另一个列表,先把它转换成一个通用列表,然后再转换成这样的等级列表


List gradeList=(List我找到了问题的解决方案。因为我在应用程序中使用了oracle数据库,所以我使用了以下软件包:

import oracle.sql.ARRAY;
import oracle.sql.Datum;
import oracle.sql.STRUCT;  
我需要提到的是,我的一个数据库表中的
“GRADES”
字段被组织为嵌套表。然后我得到了我的Grade对象列表,如下所示:

List<Grade>grades = new ArrayList<>();
ARRAY gradesList = (ARRAY)rs.getObject("GRADES");
if(gradesList != null && gradesList.length() != 0) {
    Datum[] elems = gradesList.getOracleArray();    

    for(int i = 0; i<elems.length;i++) {
        STRUCT gradeInfo = (STRUCT) elems[i];
        Object[] gradeInfoValues = gradeInfo.getAttributes();
        Grade grade = new Grade();
        /*SETTING GRADE OBJECT ATTRIBUTES BY USING gradeInfoValues ARRAY ...*/
        grades.add(grade);
        }
    }   
Listgrades=newArrayList();
数组等级列表=(数组)rs.getObject(“等级”);
如果(gradesList!=null&&gradesList.length()!=0){
Datum[]elems=gradesList.getOracleArray();

对于(int i=0;i如果您使用的是Java 8,并且假设您有
List
,需要将其转换为
List
,那么您可以按如下方式使用流

final List<Grade> gradeList = grade.stream()
                             .filter(Grade.class::isInstance)
                             .map(Grade.class::cast)
                             .collect(toList());
final List gradeList=grade.stream()
.filter(Grade.class::isInstance)
.map(Grade.class::cast)
.collect(toList());

filter()
以排除将导致类型转换异常的项目。

“我试图在for循环中从grades列表中转换对象,并将其添加到另一个列表中,但没有成功”。什么不起作用?你有没有遇到异常?发生了什么其他事情?请编辑你的问题,包括为什么这对你不起作用的细节。@LukeWoodward我找到了解决方案。关于“我试图将等级列表中的对象强制转换为for循环并添加到另一个列表中,但不起作用”,我想我得到了答案[Ljava.lang.Object;无法强制转换为data.models.Grade异常