私は3つのテーブルを持っています。LOV、SYS、およびルール。Sys テーブルは、@Model を使用して、アプリケーション内のエディターの 1 つの View Controller にマップされます。エディターで 3 つの列を表示する必要があります
- アプリ ID
- エラーメッセージ
- 訂正メッセージ
sys テーブルには、AppID とエラー メッセージを保持する Char_value 列が 1 つあります。Lov テーブルには、修正メッセージを保持するオプション値と呼ばれる列があります。だから私はデータを引き出すために次のクエリを書きました
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");
VC にマップされているため、OSC にすべてを含める必要があるため、sys テーブルのオブジェクトを OSC として作成しています。また、2番目のクエリで、同じ結果セットでエラーとcorrメッセージを取得しようとしています。プロセス名をパラメーターとして渡します。
res と res2 は SYS のタイプです
res = qAppId.getResultList();
次の for ループは、パラメータを 2 番目のクエリに渡します。BUT ITS GIVING ERROR " 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);
}
この作業を行うためのマッピング、注釈についてどうすればよいか教えてください。