当前位置: 首页 > 知识库问答 >
问题:

将SQL本机查询映射到POJO类

屠建本
2023-03-14

我尝试使用@sqlresultsetmapping@constructorresult将本机SQL查询映射到POJO类,如下所示:

@SqlResultSetMapping(
        name = "AnomalieMapping",
        classes = @ConstructorResult(
                targetClass = Anomalie.class,
                columns = {
                        @ColumnResult(name = "anomalieElement", type = String.class),
                        @ColumnResult(name = "anomalieType", type = String.class),
                        @ColumnResult(name = "libelle", type = String.class) }))
public class Anomalie {

    private ElementAnomalieEnum anomalieElement;
    private TypeAnomalieEnum anomalieType;
    private String libelle;

    public Anomalie() {
        super();
    }

    public Anomalie(final String libelle, final String anomalieElement, final String anomalieType) {
        super();
        this.libelle = libelle;
        this.anomalieElement = ElementAnomalieEnum.valueOf(StringUtils.stripAccents(anomalieElement.toUpperCase()));
        this.anomalieType = TypeAnomalieEnum.valueOf(StringUtils.stripAccents(anomalieType.substring(5).toUpperCase()));

    }
//Getters and Setters
}

然后,为了在创建本机查询时使用声明的结果集映射,我通过它的名称引用它:

Query query = entityManager.createNativeQuery(sqlQuery, "AnomalieMapping");
return query.getResultList();

但这对我不起作用,我得到以下错误:

共有1个答案

顾俊楚
2023-03-14

我就是这样解决我的问题的:

我没有声明@sqlresultsetmapping注释,而是在orm.xml文件中声明它,如下所示:

<sql-result-set-mapping name="AnomalieMapping">
        <constructor-result target-class="xxx.Anomalie">
            <column name="libelle"/>
            <column name="anomalieElement"/>
            <column name="anomalieType"/>
        </constructor-result>
    </sql-result-set-mapping>

然后在我的刀中,我得到如下结果:

Query query = entityManager.createNativeQuery(sqlQuery, "AnomalieMapping");
return query.getResultList();
 类似资料:
  • 问题内容: 我有一个带有本地查询的Spring Data Repository方法 并且我想将结果映射到Non-Entity POJO 。 是否可以,如果可以,请提供示例吗? 问题答案: 假设在Orid的答案中使用GroupDetails,您是否尝试过JPA 2.1 @ConstructorResult? 并在存储库界面中使用以下命令: 根据springJPA的数据文件,spring将首先尝试找到

  • 并且我希望将结果映射到非实体POJO。 是否可能?如果可能,请提供一个例子?

  • 我试图使用本机查询将多个表中的联接值检索到自定义POJO中。我要检索的值之一是JSONB字段。虽然我能够获得具有该字段的实体,但当我将其强制输入自定义POJO时,我得到了一个org.hibernate.MappingExcema: No Dialect映射for JDBC type: 1111异常。下面是我使用的: 使用POJO的: 使用MyJson类: 而且 还有我的定制POJO “@TypeD

  • 当我直接对我的db运行本机查询时,结果集看起来就像我所期望的那样。 当我从我的JpaRepository运行本机查询时,除了word始终为null之外,所有的东西都在那里工作。我似乎想不出如何将额外的字符串单词结果映射到实体中的一个字段。 有没有办法把这个弄到地图上?还是必须为所有字段创建一个完整的@SQLResultSetMapping(),并与本机查询耦合?(希望不会) 我刚才是在概括。以下是

  • 我有一个复杂的本机查询,我正在尝试将其结果映射到非实体DTO类。我正在尝试使用的with 我的DTO类 我的entity类,它具有我将调用此本机查询结果的存储库接口。 存储库 当我从ItemRepository调用getItemDetails()时,出现以下错误: org.springframework.data.mapping.属性引用异常:没有属性项找到项目类型的详细信息 使用和并解决此问题的