如何将java.sql.array转换为list<;MyClass>;
我正在为我的应用程序编写一些DAO对象,它们与oracle数据库(对象关系数据库)通信。除了代码的这一部分外,一切正常:如何将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
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异常