Query query = em.createNativeQuery(STUDENT_QUERY_WITH_PARAMS);
query.setParameter("studentId", stduentId);
query.setParameter("startDate", valueOf(startDate), TemporalType.DATE);
query.setParameter("endDate", valueOf(endDate), TemporalType.DATE);
List<Object[]> resultList = query.getResultList();
List<StudentDepartmentCatDTO> result = new ArrayList<>(resultList.size());
for (Object[] row : resultList) {
result.add(new StudentDepartmentCatDTO((String)row[0], (String)row[1], (String)row[2], null,(UUID)row[4], (Integer)row[5], (Integer)row[6], (Integer)row[7], (Integer)row[8], null, null, null, null ));
}
Run Code Online (Sandbox Code Playgroud)
`我有 SQL 查询通过加入多个表(在我的例子中是 13 个表)来从各种表中提取某些数据,我能够成功地取回所有结果,但是当我尝试将这些结果映射回 DTO 时,我正在转换例外。我如何克服这些异常?
B 不能转换为类 java.util.UUID 和类 java.math.BigDecimal 不能转换为类 java.lang.Integer
由于所有结果都来自各种表,我没有找到使用 SqlResultSetMapping 执行此操作的方法,因为没有任何托管实体可以直接映射到结果。有一个更好的方法吗?我如何解决这些强制转换异常?我可以创建非托管实体以将所有结果映射到它吗?如何将 sql 结果提取到我的 DTO。