我正在使用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)
我不知道这个例外是什么以及如何将会话名称设置为查询。