【问题标题】:Spring + Hibernate + Tuckey Urlrewrite = LazyInitializationExceptionSpring + Hibernate + Tuckey Urlrewrite = LazyInitializationException
【发布时间】:2011-12-21 11:21:03
【问题描述】:

域名说明

我正在使用
Spring + Hibernate + Tukey Urlrewrite
Spring 框架 Web 应用程序中。

我有一个简单的数据结构
特别有 1:Many Image 对象

我使用的是网址中的语言:
http://site.com/en/someview
http://site.com/de/someview 等等
还有一个默认的url:
http://site.com/

我正在使用 Tucky Urlrewrite 将网址从
http://site.com/en/someview 重写为
http://site.com/someview?lang=en
以便为页面选择正确的语言
我这样做是为了让用户只需更改 url 中的语言并让网站相应地更改语言

我正在默认控制器中加载特殊对象
我将 Special 对象传递给视图并在那里加载图像。

问题描述

点击http://site.com/ 时,一切正常。查看土耳其的日志,它没有进行任何重写。

当点击http://site.com/en/http://site.com/de/ 时,我感到害怕
"未能延迟初始化角色集合"

我可以证明 Tuckey Urlrewrite 存在一些问题,因为当我在地址栏中输入“重写”的 url 时,它们可以工作,甚至可以一起删除 Tuckey Urlrewrite。

我已经尝试了以下

  • 在控制器中加载图像 - 不起作用
  • 使用 OpenEntityManagerInViewInterceptor -- 不起作用
  • 使用 Tuckey 的调度程序 REQUEST/FORWARD -- 不起作用
  • 使用 Tuckey 的 type="redirect" -- 确实有效,但按预期重定向了浏览器
  • 使用 OneToMany 属性的 fetch=FetchType.EAGER - 有效(但从长远来看并不理想)

我愿意接受所有关于删除使用 FetchType.EAGER 的建议。

我的一些想法是
- Url重写的不同方法,即是否可以设置tomcat在DispachFilter之前处理重写 - 不同的 urlrewriter 即不同的产品,或内部 Spring URL Rewriter

我读过的网站

真的会非常感谢任何提示

亚当

【问题讨论】:

    标签: hibernate spring-mvc tuckey-urlrewrite-filter


    【解决方案1】:

    如果您使用OpenSessionInViewFilter/OpenEntityManagerInViewFilter,请确保满足以下条件之一:

    • Open...InViewFilter<filter-mapping> 在 Tuckey 过滤器的 <filter-mapping> 之前声明

    • <filter-mapping>Open...InViewFilter 包含 <dispatcher>FORWARD</dispatcher>

    否则您的Open...InViewFilter 将不会被调用,因为Tuckey 过滤器在重写URL 时会执行转发,因此在它之后声明的过滤器应该具有<dispatcher>FORWARD</dispatcher> 才能被调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2012-11-19
      相关资源
      最近更新 更多