我有输入类型,它的值在flowScope中设置。
<input name="myItem" required="false" value="flowScope.myItem"/>
我正在创建一个MyOtherItem列表并将其发送到这样的控制器方法:
<evaluate expression="myController.save(myOtherItemDataModel.selectedRows,myItem)" result="flowScope.myItem"/>
在MyController中,我有方法保存,我希望通过从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的新实例,只是覆盖了旧实例的数据。有谁知道我该如何解决这个问题?
答案 0 :(得分: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;
}