首页 > 解决方案 > 将不同的本机查询结果映射到具有相同 SqlResultSetMapping 的相同 POJO?

问题描述

我需要执行几个不同的查询,并且我想使用相同的 POJO 来获取结果。我从这些查询中得到的是相同列的组合,我可以重复使用相同的列sqlResultSetMapping吗?

我正在使用 JPA-2.1 和 Java 8

我的查询类似于:

select tableA.a, tableB.b, tableA.c
from tableA
inner join tableB

select tableA.a, tableB.b
from tableA
inner join tableB

select tableB.b, tableA.c
from tableA
inner join tableB

我的 POJO 是这样的:

public class Result {
 String a;
 String b;
 String c;
}

最后,我的 SqlResultSetMapping 是:

@SqlResultSetMapping(
        name="GeneralResult",
        classes = {
                @ConstructorResult(
                        targetClass = Result.class,
                        columns = {
                                @ColumnResult(name="a", type=String.class),                             @ColumnResult(name="b", type=String.class),     @ColumnResult(name="c", type=String.class)
                        }
                )
        }
)

当我使用字段 a、b 执行第一个查询时,调用工作正常。问题是当我执行其他两个查询之一时。

我可以SqlResultSetMapping对这些查询使用相同的吗?

我尝试了几个 ConstructorResult 但问题是所有字段都是字符串(数据库中的 VARCHAR)。

提前致谢。

标签: javajpa-2.1sqlresultsetmapping

解决方案


推荐阅读