マスター詳細テーブルにデータを保存したい。最初の部分はマスターテーブル用で、最後の部分は詳細テーブル用です。java.lang.Stringはキャストできません[ Ljava.lang.String。この問題から回復する方法。map.get( "step_id []")を文字列配列String [] WfIdsに割り当てる方法。私は別々の文字列配列に各値を割り当てたい。java assign各値を文字列配列にマップする
コントローラコード
Map<String,Object> wfManager = new HashMap<String,Object>();
// ************************ビューから送られたマスタデータ****** ************************ //
wfManager.put("workflow_code",(request.getParameter("workflow_code")).toUpperCase());
wfManager.put("workflow_name",request.getParameter("workflow_name"));
wfManager.put("workflow_descr",request.getParameter("workflow_descr"));
wfManager.put("object_type_code",request.getParameter("object_type_code"));
// *************** ******ビューから送信された詳細項目データ***************************** //
wfManager.put("wf_block_id[]", request.getParameter("wf_block_id[]"));
wfManager.put("step_code[]" , request.getParameter("step_code[]"));
wfManager.put("step_name[]", request.getParameter("step_name[]"));
wfManager.put("doa_type_code[]", request.getParameter("doa_type_code[]"));
wfManager.put("doa_type_name[]", request.getParameter("doa_type_name[]"));
サービスコード
public Map<String, String> insert(Map<String, Object> map) {
// ************************ビューから送られたマスタデータ************* ***************** //
Map<String, String> data = new HashMap<String, String>();
Workflow wf = new Workflow();
wf.setWorkflowCode((String)map.get("workflow_code"));
wf.setWorkflowName((String)map.get("workflow_name"));
wf.setWorkflowDescr((String)map.get("workflow_descr"));
wf.setObjectTypeCode((String)map.get("object_type_code"));
String[] WfIds = (String[]) map.get("step_id[]");
String[] wfBlockIds = (String[]) map.get("wf_block_id[]");
String[] wfsCodes = (String[]) map.get("step_code[]");
String[] stepNames = (String[]) map.get("step_name[]");
String[] doaTypeCodes = (String[]) map.get("doa_type_code[]");
String[] doaTypeNames = (String[]) map.get("doa_type_name[]");
List<WorkflowDetails> wfDetailsList = new ArrayList<WorkflowDetails>();
for(int i = 0; i< wfsCodes.length; i++){
WorkflowDetails wfDetails = new WorkflowDetails();
wfDetails.setWorkflowCode(wf.getWorkflowCode());
wfDetails.setWorkflowName(wf.getWorkflowName());
wfDetails.setWorkflowDescr(wf.getWorkflowDescr());
wfDetails.setWorkflowObjectTypeCode(wf.getObjectTypeCode());
wfDetails.setWorkflowObjectTypeName(wf.getObjectTypeName());
wfDetailsList.add(i,wfDetails);
}
wf.setSteps(wfDetailsList);
id = workflowManagerDAO.insertDoc(wf);
data.put("id", id);
return data;
} DAOのため コード:
@Transactional
@Override
public String insertDoc(Workflow wfManager) {
for(int i = 0; i < wfManager.getSteps().size(); i++){
WorkflowDetails wfDetails = new WorkflowDetails();
wfDetails = wfManager.getSteps().get(i);
sessionfactory.getCurrentSession().save(wfDetails);
sessionfactory.getCurrentSession().flush();
}
String id = (String) sessionfactory.getCurrentSession().save(wfManager);
sessionfactory.getCurrentSession().flush();
return id;
}
'map.get(" step_id [] ");'はおそらく 'String []'(またはそのタイプの階層構造の何か)ではありません。したがって、そこからキャストすることはできません。 http://stackoverflow.com/questions/5289393/casting-variables-in-java – ifly6
を参照してください。私の問題はstep_id []は文字列[]であり、現在は地図の値です。取得して割り当てたいString [] stepIdsに挿入します。 –
完全なエラーコードを教えてください。 'java.lang.Stringは[Ljava.lang.String'にキャストできないため不可能です。 – ifly6