我有一个这样的查询
FROM RUN cr
LEFT JOIN OFFER_SET os ON cr.ID = os.RUN_ID
LEFT JOIN AA aa ON cr.ID = aa.RUN_ID
LEFT JOIN POLICY ex ON cr.ID = ex.RUN_ID
WHERE cr.ID = '1d4101ea2'并创建了一个映射实体,这样我就可以以正确的格式返回结果集。看起来像这样。
@Entity
@SqlResultSetMapping(name="OutcomeDetails",
entities={
@EntityResult(entityClass=OutcomeDetailsEntity.class, fields={
@FieldResult(name="reason", column="REASON_CD"),
@FieldResult(name="status", column="STATUS_CD"),
@FieldResult(name="countered", column="COUNTERED_FLG"),
@FieldResult(name="id", column="ID"),
@FieldResult(name="version", column="VERSION"),
@FieldResult(name="createdD", column="CREATED_D"),
@FieldResult(name="modifiedD", column="MODIFIED_D"),
@FieldResult(name="corrId", column="CORRELATION_ID"),
@FieldResult(name="policyId", column="POLICY_ID"),
@FieldResult(name="modelId", column="MODEL_ID"),
@FieldResult(name="srcId", column="SRC_ID"),
@FieldResult(name="refId", column="REF_ID"),
@FieldResult(name="serviceName", column="SERVICE_NAME"),
@FieldResult(name="policy", column="POLICY"),
@FieldResult(name="policyVersion", column="POLICY_VERSION"),
})
})当我在sql控制台中运行这个查询时,它工作得很好。当我在代码中运行它时,我得到了这个错误
Caused by: java.sql.SQLException: Column 'corrId' not found.
代码如下所示
try {
Query q = cdsEntityManager.createNativeQuery("SELECT aa.REASON_CD, os.COUNTERED_FLG, ex.STATUS_CD, cr.* " +
"FROM RUN cr " +
"LEFT JOIN OFFER_SET os ON cr.ID = os.RUN_ID " +
"LEFT JOIN AA aa ON cr.ID = aa.RUN_ID " +
"LEFT JOIN POLICY ex ON cr.ID = ex.RUN_ID " +
"WHERE cr.ID=:id ", OutcomeDetailsEntity.class);
q.setParameter("id",id);
result = q.getResultList();
} catch (Exception exception) {我环顾了四周,尽管人们也遇到过类似的问题,但没有一个解决方案有效。我是不是漏掉了什么?
发布于 2019-12-27 12:49:35
对于以后遇到这种情况的任何人,我需要将name属性和column属性更改为相同的属性,因此如下所示
@Entity
@SqlResultSetMapping(name="OutcomeDetails",
entities={
@EntityResult(entityClass=OutcomeDetailsEntity.class, fields={
@FieldResult(name="REASON_CD", column="REASON_CD"),
@FieldResult(name="STATUS_CD", column="STATUS_CD"),
@FieldResult(name="COUNTERED_FLG", column="COUNTERED_FLG"),
@FieldResult(name="ID", column="ID"),
@FieldResult(name="VERSION", column="VERSION"),
@FieldResult(name="CREATED_D", column="CREATED_D"),
@FieldResult(name="MODIFIED_D", column="MODIFIED_D"),
@FieldResult(name="CORRELATION_ID", column="CORRELATION_ID"),
@FieldResult(name="POLICY_ID", column="POLICY_ID"),
@FieldResult(name="MODEL_ID", column="MODEL_ID"),
@FieldResult(name="SRC_ID", column="SRC_ID"),
@FieldResult(name="REF_ID", column="REF_ID"),
@FieldResult(name="SERVICE_NAME", column="SERVICE_NAME"),
@FieldResult(name="POLICY", column="POLICY"),
@FieldResult(name="POLICY_VERSION", column="POLICY_VERSION"),
})
})https://stackoverflow.com/questions/59362954
复制相似问题