问题标签 [open-session-in-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
278 浏览

spring - 会话中的 OpenSessionInViewFilter 和对象 - Spring MVC

我在使用 OpenSessionInViewFilter 时遇到问题,并且在给定请求中要执行的部分中描述的对象会发生:

我的控制器:

我的实体:

在会话中处理实体的最佳做法是什么?

0 投票
0 回答
258 浏览

spring - OpenSessionInView 没有启动,春天,休眠

大家好,我对 OpenSessionInViewFilter 有疑问,这个过滤器根本没有启动。这是我受此折磨的第三天,我不知道如何解决它,我已经阅读了很多关于此的问题和答案,但没有任何帮助。有我的配置文件,我有两个项目,第一个是第二个(网络应用程序)需要的服务。

在 web.xml 的第一个项目中,我有:

在这个项目中,我有 spring-config.xml:

在下一个项目中,我有另一个 spring-config.xml:

和spring-hibernate.xml:

现在我们可以转到 Web 应用程序和 web.xml 中:

还有另一个spring-config.xml:

抱歉这个大配置文件是最后一个 tomcat 启动日志:

请帮我

0 投票
3 回答
1292 浏览

hibernate - 休眠更新问题 - OpenSessionInViewFilter

尝试使用 Spring MVC 3 和 OpenSessionInViewFilter 在我的应用程序中通过休眠更新对象大约需要 5 个小时,但没有任何运气。

我可能已经浏览过 StackOverflow 和其他论坛中所有可用的线程!

Hibernate 不会抛出任何错误,并说对象已更新,但它没有反映在我的数据库中。

任何帮助将不胜感激。

所以,这是我的JSON更新请求:

控制器:

服务等级:

道法:

**更新 2:正如 Deinum 先生所建议的,我已将事务管理器配置移至 o2-data.xml,现在仅扫描调度程序中的控制器,同时扫描 o2-data.xml 中的其他组件

数据配置

调度程序配置:

web.xml

0 投票
1 回答
571 浏览

spring - 休眠条件列表不会立即返回新记录

我在 Hibernate 4 中使用 Spring MVC。
我的问题是当我使用 Criteria 和 list() 方法从表中获取所有记录时。

有一个第 3 方进程每 1 秒将记录插入表中,并且每次用户按下“刷新”按钮时都会显示一个表示该表的屏幕。
当我在同一个会话中使用 Criteria.list() 时,我得到了延迟 45 秒的记录。最低限度。这意味着用户看到仅在 45 秒之前插入的记录。

这是使用标准:

这是休眠+事务设置:

@事务设置:

另外,我正在使用: OpenSessionInViewFilter

我已经尝试过:

  • 禁用查询缓存
  • 将隔离级别更改为更高的级别
  • 清除()会话

有什么建议么?

谢谢,塔尔。

0 投票
1 回答
2408 浏览

jakarta-ee - 在 JPA for Java EE 中的视图中打开 EntityManager

我正在寻找如何在 JPA 中实现 Open EntityManager In View 模式。但是,我能找到的只是 Hibernate(在视图中打开会话)或 Spring。

你们中的任何人都可以举一个例子(如果可能的话,用代码)如何为 JPA 和 Java EE 实现 Open EntityManager In View 模式?

0 投票
2 回答
1812 浏览

java - 使用 Hibernate、Spring、Struts 2 在视图模式中打开会话

我正在开发一个项目,使用 Hibernate 进行持久化,使用 Struts 2 进行视图模式。

我的配置文件是:

web.xml


applicationContext.xml


我的问题是我无法在 Struts 2 的视图模式中保持 Hibernate 会话打开,这意味着当我尝试加载一些尚未使用 Hibernate 初始化的数据(例如集合)时,我得到了org.hibernate.LazyInitializationException,所以在做了一些研究后我发现我必须添加此范围web.xml 以使会话在视图模式中保持打开状态。

范围:


但即使这样,我仍然有同样的问题,所以谁能告诉我我做错了什么。

0 投票
1 回答
2048 浏览

java - 在 Spring MVC 中使用 ScrollableResults-backed Stream 作为返回类型时遇到问题


重要提示:这已被接受为Spring 问题,目标修复版本为 4.1.2。


我的目标是在从 Hibernate 生成 HTTP 响应时实现 O(1) 空间复杂度ScrollableResults。我想保留标准机制,在该机制中MessageConverter分派 a 以处理从 a 返回的对象@Controller。我已经设置了以下内容:

  1. MappingJackson2HttpMessageConverter丰富了JsonSerializer处理 Java 8 的 a Stream
  2. ScrollableResultSpliterator需要包装ScrollableResults成的自定义Stream
  3. OpenSessionInViewInterceptor需要保持 Hibernate 会话在MessageConverter;
  4. 设置hibernate.connection.release_modeON_CLOSE
  5. 确保 JDBC 连接具有必要的 ResultSet 可保持性:con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT).

此外,我需要一个支持这种可保存性的数据库。PostgreSQL 就是这样一个数据库,我对此没有任何问题。

我遇到的最后一个绊脚石是HibernateTransactionManager事务提交时使用的策略:除非底层会话是“休眠管理的”,否则disconnect()它将关闭我的光标以及其他所有内容。这样的策略在一些特殊情况下很有用,特别是“会话范围的会话”,这与我的要求相去甚远。

我已经设法通过一个糟糕的 hack 来解决这个问题:我不得不用一种方法覆盖有问题的方法,该方法实际上是原始方法的复制粘贴,除了已删除的disconnect()调用,但它必须诉诸反射来访问私有 API。

由于我认为我的方法是生成 ResultSet 支持的响应的“正确方法”,并且由于 Streams API 使这种方法非常方便,所以我想以受支持的方式解决这个问题。

有没有办法在没有我的黑客的情况下获得相同的行为?如果不是,那么通过 Spring 的 Jira 请求这是一件好事吗?

0 投票
0 回答
250 浏览

jsf - Manager EntityManager 认为 JSF 生命周期

好吧,我正在尝试手动创建模式“视图中的 OpenView 会话”,而不使用 Spring Framework。

我的想法是在恢复视图阶段打开 EntityManager SESSION 并在渲染响应阶段关闭,使用监听器:

但是,如果该过程来自 CRONTAB 并且 JSF 阶段没有被触发,我认为这是行不通的。

有人有一个很好的解决方案来实现没有 Spring 的 OpenSessionInView 吗?(我正在使用 CDI)

0 投票
1 回答
810 浏览

hibernate - 从 open-session-in-view 缓存延迟加载关系的集合

我有这种情况(底部有详细信息):

  • X 是一个休眠实体
  • Xy 是对另一个休眠实体 Y 的延迟加载引用
  • Yz 是休眠实体 Z 的延迟加载、缓存集合

在事务后 Spring bean 中,在 open-session-in-view 中,我正在访问 Xyz 并获得“org.hibernate.HibernateException: Unable to resolve owner of loading collection [...] for second level caching”。调试到 Hibernate 4.3.8.Final 我发现 Xy 是使用临时会话延迟加载的,因此在寻找它的“原始”StatefulPersistenceContext中不可用。CollectionLoadContext

那么我是否正在做一些尚未完成的事情?我是否需要事先显式触发此延迟加载或删除缓存?

提交事务后,但仍在视图中的开放会话中,我正在调用 Teachable.getElement().getChildConnections() 并获取 HibernateException。从调试中我可以看到 ElementSch 和 ElementConnectionSch 被延迟加载到单独的会话中,即主会话已加载 Teachable 并且两个单独的临时会话正在用于 ElementSch 和 ElementConnectionSch。

0 投票
1 回答
410 浏览

spring - OpenSessionInView 与事务性?(春天/休眠/ JPA)

我有一个带有延迟加载集合的 JPA 实体。我不需要每次都收集。

我在服务类上有一些方法,它们执行大量数据库交互,最后将 Foo 实体保存到数据库中。我需要为集合中的大约 100 个项目发生这种情况。

processAllFoos@RESTController每当收到请求时都会从 a 调用。

但是,我不想processAllFoos被包装在单个数据库事务中,因为这会锁定整个 Foo 表,直到为所有 Foo 执行业务逻辑。

如果我使用该processFoo方法@Transactional,我会得到LazyInitializationException抱怨 Hibernate 会话不存在的方法。为了完成这项工作,我需要在调用堆栈中创建所有方法,@Transactional以便嵌套方法可以加入调用方法的事务。但这会锁定整个 Foo 表,如上所述。

添加一个OpenSessionInViewFilterfor thedispatcher servlet解决了我的问题,但我读到使用这种方法存在性能和实体分离/重新连接(我在应用程序的其他部分执行)的问题。

有没有一种方法可以在不使用该方法的情况下做我想做的事OpenSessionInView?通过使用这种方法,我还添加了哪些其他漏洞?

Spring/Hibernate 4.x


根据下面的答案,我能够做到以下几点: