jpa - EclipseLink JPA 2.1 - 调用 JPA 本机查询并尝试将结果映射到 POJO 时引发异常
问题描述
我正在使用 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)
我不知道这个异常是什么以及如何将会话名称设置为查询。
解决方案
推荐阅读
- typescript - 带有 Webpack 的 JS 中的 TypeScript 模块结构
- python - 为具有相对较少数据点的直方图选择 bin
- google-cloud-platform - Google Dataflow 上的 Python 流式传输管道缺少一些元素指标
- scala - 在 CLI 中定义 Spark Master 与在 Spark 应用程序代码中定义“master”有什么区别?
- html - 在模糊背景 div 中取消模糊内容
- python - Python 中的 IBM 音素检测
- python - 为什么在 python 中读取二进制文件时会得到错误的字节?
- django - 带有 django 本地化的复数格式
- javascript - 有没有办法禁用用户的下拉菜单,同时仍然能够提交带有禁用下拉菜单的表单?
- delphi - 从delphi中的IdTCPServer连接读取未知数量的字节