如何将类分配给 Mutiny.Query 的结果

问题描述 投票:0回答:1

我需要转换使用 Hibernate:Mutiny 运行 [Select] 查询后得到的结果,但我不知道如何为结果指定类型。当我收到列表时,我得到一个列表,当尝试映射这些结果时,我无法访问特定属性,因为它们只是 java.lang.Object 的实例。

因为这只是组织数据的一种方式,所以我需要我的“视图”不是是一个实体(这么说,因为我看到了一个解决方案强制你只能在实体类上使用它) .

sessionFactory.withSession(
             session -> session.createNativeQuery(myQuery)
            .getResultList().map(MyListView::ProcessData);

我在哪里收到此列表:

public class MyListView{

    private List<MyIndividualView> items;


    public static MyListView processResults(List<Object> results){

        // Transform data.
    
    }
}

List 似乎包含 Object 实例,尝试转换为此类功能通常返回的类(如 JsonObject、Map 或 Row)会抛出 ClassCastException。

我发现了另一个类似的 StackOverflow 条目(将添加下面的链接),但他们通过“展开”查询然后使用“转换器”来映射它来解决它:

query.unwrap(SQLQuery.class)
            .addScalar("total", LongType.INSTANCE)
            .addScalar("amountOfSales", LongType.INSTANCE)
            .addScalar("amountOfProducts", LongType.INSTANCE)
            .setResultTransformer(Transformers.aliasToBean(SaleStatsInfo.class));

我无权访问该 unwrap 方法。也许这是一个不同的依赖项或其他东西,我真的不知道,这不是我现在正在使用的选项。 知道如何解决这个问题吗? 感谢您的阅读。

我指的链接:createNativeQuery 映射到 POJO(非实体)

java hibernate quarkus vert.x mutiny
1个回答
0
投票

解决方案:看来我得到的实际上是一个数组列表(Object[]),您可以通过知道顺序来访问所有属性并将它们转换为正确的类型。 这不是处理此类事情的最奇特的方法,但是,由于缺乏任何其他解决方案,必须这样做。

© www.soinside.com 2019 - 2024. All rights reserved.