小编dum*_*mmy的帖子

我们如何使用 java 将复杂的 NativeQuery 结果映射到 DTO 对象

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。

java sql hibernate jpa

0
推荐指数
1
解决办法
3153
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

sql ×1