我有实体
@Entity public class A implements Serializable {
@OneToMany(mappedBy = "a", fetch = FetchType.LAZY)
private List<B> bList;
}
@Entity public class B implements Serializable{
@JoinColumn(name = "A_ID", referencedColumnName = "ID")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private A a;
@JoinColumn(name = "C_ID", referencedColumnName = "ID", nullable = false)
@OneToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
private C c;
}
@Entity public class C implements Serializable {
@OneToOne(cascade = CascadeType.ALL, mappedBy = "c", fetch = FetchType.EAGER)
private B b;
}
如果我从远程客户端向ejb方法传递B实体,则传递给应用程序服务器的实体为空;如果我将惰性加载更改为急切加载,则一切正常。我不想使用急速加载,如何避免急速加载?
发布于 2010-12-03 20:51:39
要持久化从远程客户端接收的B类型实例,唯一的方法是从旧副本恢复其子实例的状态,然后持久化。
public B updateFromRemote(B b) {
B oldCopy = bDao.findBById(b.getId());
b.setA(oldCopy.getA());
b.setC(oldCopy.getC());
return bDao.save(b);
}
https://stackoverflow.com/questions/4348279
复制相似问题