2013-02-05 5 views
0

입력 유형이 있으며 그 값은 flowScope에 설정되어 있습니다. 내가 의해 myItem의 여러 인스턴스를 저장할 저장 방법이입력란의 인스턴스를 여러 개 만들 수 없습니다.

<evaluate expression="myController.save(myOtherItemDataModel.selectedRows,myItem)" result="flowScope.myItem"/> 

내부 MyController에 :

<input name="myItem" required="false" value="flowScope.myItem"/> 

나는 MyOtherItem의 목록을 작성하고이 같은 컨트롤러 메소드로 전송하고 myOtherItemList에서 데이터를 가져 오는 중입니다.

public MyItem save(MyOtherItem[] myOtherItem,MyItem myItem){ 
    for(int i=0; i<myOtherItem.length; i++){ 
     myItem.setData(myOtherItem[i].getData()); 
     saveMyItem(myItem); 
    } 
    return myItem; 
} 

내부 saveMyItem 방법 나는

public void saveMyItem(MyItem myItem) { 
    entityManager.persist(myItem); 
} 

여기 위해 entityManager가 javax.persistence.EntityManager 클래스의 인스턴스입니다 MyItem 객체를 지속하고있다.

내 문제는 저장 방법 루프가 두 번 이상 실행되는 동안 데이터베이스에 단 하나의 항목 만 저장된다는 것입니다. 그 이유는 MyItem의 새 인스턴스를 만들고 기존 인스턴스의 데이터를 재정의하지 않기 때문입니다. 아무도 내가이 문제를 어떻게 풀 수 있는지 알고 있니?

답변

0

당신이 반환하려는 myItem 이해가 안 컨트롤러 방법 당신에게 MyItem을 통과해야하는 이유 당신이 그들의 무리를 저장할 것 때문에 내가 이해가 안 ...

대신 다음과 같이 사용해야합니다.

public List<MyItem> save(MyOtherItem[] myOtherItem){ 
    List<MyItem> result = new ArrayList<MyItem>(); 
    for(int i=0; i<myOtherItem.length; i++){ 
     MyItem myItem = new MyItem(); 
     myItem.setData(myOtherItem[i].getData()); 
     saveMyItem(myItem); 
     result.add(myItem); 
    } 
    return myItem; 
} 
관련 문제