如果我们将属性注释为惰性初始化为true,则无法访问该属性。例如
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="orgTypeID")
private OrganizationType type;
我们无法访问组织类型。那么在课堂上声明这样的场,吸气剂和制定者的需要是什么?
我们不需要加入。感谢您能解释一下。
答案 0 :(得分:0)
除非要求提取具有'lazy'提取的对象,否则不会提取。
对于懒惰地进行提取,对象必须仍处于会话上下文中。如果您尝试在会话上下文(分离对象)之外访问此惰性属性,您将在服务器上看到一个延迟初始化错误 - 没有会话问题。
要将对象放回会话中,您必须打开会话并将对象合并到会话中并尝试获取惰性属性。
要解决您的问题,如果您预计将来会提取此惰性属性,则必须在以下列方式加载父级时手动获取它。
Session session = factory.getSession();
Class clas = session.find(Class.class, id);
clas.type();//here you are anticipating that it will be used somewhere else, so force it to load
session.close();
// clas.type(); // Hypothetically, if you try to load the type here, this may not work as the session is closed before this line. the object is now in detached state.
希望它能回答你的问题。