0

我有输入类型,它的值在 flowScope 中设置。

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

我正在创建一个 MyOtherItem 列表并将其发送到这样的控制器方法:

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

在 MyController 中,我有方法 save,我想通过从 myOtherItemList 获取数据来保存 myItem 的多个实例。

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 方法中,我坚持 MyItem 对象

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

这里 entityManager 是 javax.persistence.EntityManager 类的一个实例。

我的问题是我只在数据库中保存了一个条目,而 save 方法中的循环运行了不止一次。原因是它没有创建 MyItem 的新实例,而只是覆盖旧实例的数据。有谁知道我该如何解决这个问题?

4

1 回答 1

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;
}
于 2013-02-05T19:50:07.600 回答