1

Spring Webflow:2.3.1
Spring Data:1.0.2
JSF:2.1.9
Primefaces:3.3.1

我正在尝试将 Spring Data JPA Repositories 与 JSF DataModel 结合起来,在这种情况下,Primefaces 与 LazyDataModel。这发生在使用 Spring Webflow 将 Spring 与 JSF 集成的 WebApp 中。

问题是当我在 Spring Webflow 的 ViewScope 中使用 LazyDataModel 中的 JpaRepository 时:


无法序列化流程执行;确保存储在流或闪存范围中的所有对象都是可序列化的 org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.(SerializedFlowExecutionSnapshot.java:75)"


没有 LazyDataModel 中的 JpaRepository,我无法获得正确的页面并使用 spring 数据的分页模型。我已经找到了有同样问题的人,但不幸的是没有人回答:

http://forum.springsource.org/showthread.php?116022-Webflow-Serialization-error-on-object-holding-ref-to-JPA-Data-Repository

感谢您提前提供帮助

最好的祝福

JSimas

4

2 回答 2

3

已经找到了解决这个问题的方法!

每当您需要在将存在于您的 Spring Webflow 上下文中的对象中添加对 Spring Data JPA 存储库的引用时,只需将 JPA 存储库声明为瞬态!然后您需要在包含瞬态引用的对象中添加以下注释:

  • @Configurable - 标记要即时配置的类(这会给您的应用程序增加一些开销,请注意仅在需要时才使用此注解)
  • @Autowired - 将此添加到瞬态 JPA 存储库

因此,如果您正在扩展 DataModel JSF 基类,并且想要添加一些 JPA 存储库,这里是一个示例:

@Configurable
public class XptoLazyDataModel extends LazyDataModel<Xpto> {

    @Autowired
    private transient JpaRepository<Xpto> repository;

 (...)
}

你去吧。希望这可以帮助某人。

最好的祝福

于 2012-07-11T10:45:25.130 回答
0

我还想到我应该像您一样将瞬态关键字应用于我的 JPA 存储库字段。这解决了问题,但是,我不需要使用@Configurable 或@Autowired。

于 2012-12-09T08:28:05.120 回答