0

我使用 spring3 和 hibernate3 和 jsf2 和 primefaces ..

当我尝试从数据库加载数据时遇到问题,我得到空指针异常,因为会话工厂为空!

我认为问题来自:

当我在 viewscoped 中创建 managedBean 时,它给了我“不可序列化异常”,所以我让所有类成员都实现可序列化,但它也给了我不可序列化的异常,但对于此类“org.springframework.orm.hibernate3.LocalSessionFactoryBean”,所以我使会话工厂瞬态。

在我使会话工厂瞬态后,应用程序工作正常,但如果我发出 ajax 请求,会话工厂为空,所以我有空指针异常!!!

任何帮助将不胜感激..

提前致谢

4

1 回答 1

0

没有真正创建一个新的会话工厂

您正在使用弹簧,所以参考树必须是什么

ManagedBean -> Spring Service -> Spring Repository

您的托管 bean 应该引用服务层(单例)。您应该将此引用标记为瞬态并从方法挂钩中的应用程序上下文中获取。

服务 bean 将始终从上下文中可用,您不必重新创建任何实例,只需从上下文中取回它。

至于休眠,它应该在存储库层中,并且由于您已保护服务层免受序列化存储库将不会被序列化,因此不会出现上述问题。

@ViewScoped
public class ManagedBean implements Serializable {

  @Autowired private transient Service service;

}

@Service
public class ServiceImpl implements Service{

 @Autowired private Repository repository;

}

@Repository
public class RepositoryImpl extends HibernateDaoSupport implements Repository {

  //here you can have hibernate session factory injected for dao support
}

希望这可以帮助 !!!!!

于 2012-07-20T17:31:37.760 回答