【问题标题】:Seam EntityQuery without Transactions?没有事务的Seam EntityQuery?
【发布时间】:2011-10-01 11:36:58
【问题描述】:

我使用找到的代码here 来支持Seam EntityQuery 的Ajax 有序/分页。代码本身运行良好,我可以通过各种参数毫无问题地对数据进行排序。实体本身不是 SQL 表,而是映射到 JPA(Hibernate)实体的 SQL 视图。只要我坚持 SELECT 语句并且不尝试执行 INSERT 或 UPDATE,这似乎也可以正常工作。我的后端数据库是 PostgreSQL 8.4,我还没有实现任何条件触发器来支持 VIEW 更新。

当我使用 EntityQuery.next() 或 EntityQuery.previous() 方法从一页结果转到另一页时,我的问题必须解决。似乎整个页面请求都包含在事务中,当我单击下一步按钮时,它会尝试对我的实体对象执行更新。我已经在我的 EntityQuery 中覆盖了 next() 方法,并且该操作成功完成。但是,在它完成之后和视图呈现之前,会立即发生尝试的 UPDATE。由于我的 Entity 对象无法在后端 DB 上更新(因为它是一个 VIEW),所以我抛出了一个异常。

在使用这个 EntityQuery 时,有什么方法可以防止事务被打开?我尝试使用@ReadOnly 注释我的实体对象。那没有用。我尝试将@Transactional(NEVER) 添加到我的EntityQuery。那没有用。还有其他想法吗?

【问题讨论】:

    标签: exception jpa view transactions seam


    【解决方案1】:

    尝试更改组件上的会话范围。这样,seam 将从内存中加载对象,而不是访问数据库。

    @Scope(ScopeType.SESSION)
    

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2011-10-09
      • 1970-01-01
      • 2011-01-05
      • 2010-12-19
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 2015-12-28
      相关资源
      最近更新 更多