据我了解,即使在使用 getter 方法后,JPA 中的lazyLoadedObject 也可能不会加载。因此在下面的示例中,在笔画 1 之后,lazilyLoadededPerson 可能仍然为空,并且只有在笔画 2 之后,容器才会对数据库运行查询。
lazilyLoadedPerson = runQueryToLoadPerson();
lazilyLoadedPerson.getName();
我的问题是:下面的代码是否包含笔画 2 中的错误?
lazilyLoadedPerson = runQueryToLoadPerson();
if (lazilyLoadedPerson != null) { //if lazilyLoadedPerson == null suppose that such person doesn't exists in database
return lazilyLoadedPerson.getName();
}
为什么我认为这将是一个错误: 在上面示例中的笔画 1 之后,即使 lazilyLoadedPerson 存在于数据库中,lazilyLoadedPerson 也会为空。当实体存在于数据库中但永远不会调用 getName() 方法时,我们会遇到这种情况。