我有一个Hibernate Query返回的对象,一个对象应该有一个替换列表。
所以,我有一个“订单”对象应该有一个“替换”设置,问题是,当我查找该列表时,这是我得到com.sun.jdi.InvocationException occurred invoking method.
然后,当代码继续运行,我尝试访问该集合,这就是我得到的failed to lazily initialize a collection of role: uo.ri.model.Order.ReplacementList, no session or session was closed
我真的不知道为什么我会遇到这个错误,我会在这里粘贴我的Order
和我的Replacement
课程,希望你能解决它
@Entity
@Table(name = "TOrder")
public class Order implements Serializable {
@Id
@GeneratedValue
long id;
@Temporal(TemporalType.DATE)
private Date creation_date;
@Temporal(TemporalType.DATE)
private Date reception_date;
@Enumerated(EnumType.STRING)
private PedidoStatus status;
private float price;
@OneToMany(mappedBy = "order")
private Set<PedidoRepuesto> replacementList= new HashSet<PedidoRepuesto>();
@ManyToOne
private Proveedor provider;
}
@Entity
@Table(name = "TReplacement")
public class Repuesto implements Serializable {
@Id
@GeneratedValue
long id;
private String name;
private double price;
private int having;
private int likeToHave;
private int minimumToHave;
private int totalHaving;
private float totalPrice;
@OneToMany(mappedBy = "replacement")
private Set<OrderReplacement> orderReplacements= new HashSet<OrderReplacement>();
@OneToMany(mappedBy = "replacement")
private Set<Sustitucion> sustituciones = new HashSet<Sustitucion>();
@OneToMany(mappedBy = "replacement")
private Set<ProviderReplacement> providerReplacement= new HashSet<ProviderReplacement>();
}
两个clases都有getter / setter和构造函数。
如果你需要我在这里粘贴更多的clases或者什么,请问问。 非常感谢你。
答案 0 :(得分:0)
我找到了解决方案,这很简单,就是我关闭了会话,然后我想访问图中的“未映射”部分,因此,对象是Detached =&gt;您只能访问图中存储器中的那些部分。
解决方案是在会话仍为oppenes时访问该集合,只需调用方法collection.size()
然后您可以从任何地方访问该集合。希望这有帮助!