EclipseLink JPA 2.1 - 调用JPA本机查询并尝试将结果映射到POJO时抛出异常

时间:2018-06-15 03:02:55

标签: jpa eclipselink jpa-2.1

我正在使用EclipseLink 2.5.2并使用以下orm.xml将本机查询的结果映射到POJO。

<named-native-query name="RelSumView.findFmkItem">
    <query>
        select item_file_name
             , last_release_id
             , last_release_version
          from tableA
    </query>
</named-native-query>

<sql-result-set-mapping name="FmkItemDtoMapping">
    <constructor-result target-class="xxx.model.common.biz.dto.FmkItemDTO">
        <column name="item_file_name" class="java.lang.String" />
        <column name="last_release_id" class="java.lang.Integer" />
        <column name="last_release_version" class="java.lang.String" />
    </constructor-result>
</sql-result-set-mapping>

但是在下面的DAO课程中:

public List<FmkItemDTO> getFmkReleaseItemsByEnvLabelId(int envLabelId) {
    return getEntityManager().createNamedQuery("RelSumView.findFmkItem", "FmkItemDtoMapping").getResultList();
}

抛出以下异常:

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-6042] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.QueryException
  

异常说明:必须为其指定会话名称   非对象级查询。请参阅setSessionName(String)方法。

Query: ResultSetMappingQuery(sql="RelSumView.findFmkItem")
at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:480)
at xxx.model.common.dao.FmkReleaseDAO.getFmkReleaseItemsByEnvLabelId(FmkReleaseDAO.java:28)

我不知道这个例外是什么以及如何将会话名称设置为查询。

0 个答案:

没有答案