首页 > 解决方案 > 在 Hibernate 中将对象从查询转换为其他类?

问题描述

我有以下问题:我正在使用 Spring + Hibernate,目前正在尝试选择一个 id + 其 id 的数量并返回一个包含每个 id 及其相应数量的列表。现在的问题是,显然转换器有问题,因为我得到以下异常:

ConverterNotFoundException:找不到能够从类型 [java.lang.Long] 转换为类型 [...entity.E_Amount]] 的转换器,根本原因

E_Amount 创建带有 id 和数量的对象。我的查询:

 @Query("select t.e.id, count(t.id) from...")

返回 long 和整数的完美结果,例如 {9,101}

我根本不完全确定如何开始解决这个转换问题。任何想法将不胜感激!

标签: javaspringhibernatejpahql

解决方案


尝试结果类策略:

1)使用构造函数创建一个新类 ResultClass 接受您的查询结果:

public class ResultClass{

    public ResultClass(Integer id, Long count){..}
}

2)稍微修改查询:

@Query("select new com.mypackage.ResultClass(t.e.id, count(t.id)) from...")
public List<ResultClass> query(..);

只需确保构造函数参数与 select 语句中的列的顺序相同。


推荐阅读