我有 3 张桌子。LOV、SYS 和规则。Sys 表通过使用@Model 映射到我的应用程序中的编辑器之一的视图控制器。现在在编辑器中我必须显示 3 列
- 应用编号
- 错误信息
- 更正信息
在 sys 表中有一列 Char_value 包含 AppID,以及错误消息。在 Lov 表中有一个名为 option value 的列,其中包含更正消息。所以我写了以下查询来提取数据
Query qAppId = em.createQuery("select osc from OscaSysControl osc "+
" where osc.oscaControlRule.categoryName ='PROBLEM LOG' and osc.oscaControlRule.controlName = 'APPLICATION ID'");
Query ErrCorr= em.createQuery("select osc from OscaSysControl osc join osc.oscaControlRule oscr " +
"left outer join osc.oscaControlLov lov " +
"where oscr.controlName = 'ERROR MESSAGE' and oscr.categoryName = 'PROBLEM LOG' " +
"and oscr.processName = :processName");
我正在将 sys 表的对象作为 OSC,因为它与 VC 映射,所以必须在 OSC 中拥有所有内容。同样在第二个查询中,我试图在同一结果集中获取错误和更正消息。传递进程名称作为参数。
res 和 res2 是 SYS 的类型
res = qAppId.getResultList();
下面的 for 循环是将参数传递给第二个查询。但它的错误“SYS 和 String 不兼容”
List<String> appID = new ArrayList<String>();
for (OscaSysControl o : res) {
appID.add((String)o.getAppId()); // explain ?
}
int appIDLength = appID.size();
for (int i=0; i<appIDLength; i++){
q2.setParameter("processName",appID.get(i));
q2.setParameter("processName", res.get(i).getOscaControlRule().getProcessName());
res2 = q2.getResultList();
resultErrCorr.add((OscaSysControl) res2);
}
您能否建议我如何进行映射、注释以使其工作。