【发布时间】:2015-03-04 19:18:40
【问题描述】:
我正在尝试持久化一个对象,之后我想向该对象添加 2 个列表,然后对其进行更新(因为我无法使用列表持久化对象)。
所有都在一个循环中完成,第一次迭代工作得很好,从第二次我得到一个EntityNotFoundException,说没有找到 ID 来进行更新。
private Foo foo;
private FooDao dao;
for(int i = 0 ; i<10 ; i++){
foo = new Foo();
foo.setVar(i);
dao.save(foo);
generateLists(); //creates a new list every interaction
foo.setCatList(catList);
foo.setBarList(barList);
dao.update(foo);
}
如果我删除列表和更新它工作正常。
对象:
@Entity
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
private Integer id;
@Basic(optional = false)
@NotNull
private String var;
@OneToMany(cascade = CascadeType.ALL)
private List<Bar> barList;
@OneToMany(cascade = CascadeType.ALL)
private List<Cat> catList;
//Getters and Setters
}
DAO 方法:
public void save(Foo foo) {
this.manager.joinTransaction();
this.manager.persist(foo);
//this.manager.flush(); Tried this, but didn't work
}
public void update(Foo foo) {
this.manager.joinTransaction();
this.manager.merge(foo);
}
错误:
ERROR [org.jboss.as.ejb3] (EJB default - 1) javax.ejb.EJBTransactionRolledbackException: Unable to find foo with id 4
ERROR [org.jboss.as.ejb3.invocation] (EJB default - 1) JBAS014134: EJB Invocation failed on component FooDao for method public void FooDao.atualiza(Foo): javax.ejb.EJBTransactionRolledbackException: Unable to find Foo with id 4
ps:使用这种通用方法来简化,如果需要我会发布我的解决方案(或者我称之为解决方案的混乱)
【问题讨论】: