Spring MVC 3.1.2 + Jackson 2:延迟初始化集合时出现 LazyInitializationException - 没有会话或会话被关闭

2024-01-22

我对使用 Spring MVC 3.1.2 和 Jackson 2 时遇到的错误感到疯狂。

我有以下模型类:

@Entity
@Table(name = "USER")
@JsonIgnoreProperties(ignoreUnknown=true)
public class User implements Serializable
{
    @Id
    @SequenceGenerator(name = "USER_ID", sequenceName = "USER_ID_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_ID")
    private Long id;

    @Column(length = 50, nullable = false)
    private String firstName;

    @Column(length = 50, nullable = false)
    private String lastName;

    @ManyToMany
    @JoinTable(name = "FRIENDS",
        joinColumns = @JoinColumn(name = "personId"),
        inverseJoinColumns = @JoinColumn(name = "friendId")
    )
    @JsonManagedReference
    private List<User> friends;

    @ManyToMany
    @JoinTable(name="FRIENDS",
        joinColumns=@JoinColumn(name="friendId"),
        inverseJoinColumns=@JoinColumn(name="personId")
    )
    @JsonIgnore
    private List<User> friendOf;

    // Other attributes and methods... 
}

当我获得 User 的单个实例时,杰克逊会正确序列化它。但是当我尝试获取包含朋友的 User 实例时,会引发以下异常:

org.hibernate.LazyInitializationException:未能延迟初始化 角色集合:com.frooid.model.User.friends,无会话或 会议已结束

我使用单个 HQL 获取此实例:

select u from User u left join fetch u.friends f where u.id = :id

谢谢大家!


尝试使用OpenSessionInViewFilter虽然这是为了访问视图中的延迟初始化字段,但它可能会保持会话打开,以便 Jackson 能够访问集合。

The OpenSessionInViewFilter将 Hibernate Session 绑定到线程以完成请求的整个处理。适用于“在视图中打开会话”模式,即允许在 Web 视图中延迟加载,尽管原始事务已经完成。

在 Web.xml 中

<filter>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

API文档 http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/orm/hibernate3/support/OpenSessionInViewFilter.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC 3.1.2 + Jackson 2:延迟初始化集合时出现 LazyInitializationException - 没有会话或会话被关闭 的相关文章

  • 将 Javascript 类数组传递给 MVC 控制器?

    我正在尝试将一系列服务传递给我的控制器 我尝试了很多不同的方法来让它工作 在进入控制器之前序列化数据 序列化每个服务 唯一有效的方法是将控制器参数更改为字符串并序列化数组 然后使用 JsonConvert 但我 d 宁愿不这样做 使用指定的
  • JDBCTemplate 可选参数

    我正在使用 spring JDBCTemplate 我有一个场景 其中需要传递到查询函数中的参数是条件 可选的 例如 我有以下代码 List
  • JSON 解析器从大型 JSON 文件中逐条读取

    我有一个巨大的 JSON 文件 1GB 它基本上是以下格式的对象数组 x y p q x1 y1 p1 q1 我想解析这个文件 这样所有的数据都不会加载到内存中 基本上我想获取例如 数组中的前 1000 个对象进行内存处理 然后将接下来的
  • 使用 JQuery 定义要附加的 HTML 模板

    我有一个正在循环的数组 每次条件成立时 我想附加一份副本HTML下面的代码到具有一些值的容器元素 我可以在哪里放置此 HTML 以以智能方式重复使用 a href class list group item div class image
  • JSON 为 foreach() 提供的参数无效

    我在从 JSON 检索数据时遇到一些问题 它总是说为 foreach 提供的参数无效 这是 url php 中的 JSON nama IT SERVICE SOLUTION nilai 0 periode 11 tahun 2014 nam
  • 卡夫卡监听器中的钩子

    kafka 监听消息之前 之后是否有任何类型的钩子可用 使用案例 必须设置MDC关联id才能进行日志溯源 我在寻找什么 之前 之后回调方法 以便可以在进入时设置 MDC 关联 ID 并最终在退出时清除 MDC 编辑后的场景 我将关联 id
  • Thymeleaf 下拉菜单中的默认值

    我正在使用 Spring MVC 和 thymeleaf 构建一个 Web 应用程序 我的下拉菜单是这样的并且它按预期工作
  • 从 appsettings.json 读取 JSON 对象

    TL DR 如何从 appsettings json 读取复杂的 JSON 对象 我有一个具有多种类型的配置值的 NET Core 2 x 应用程序 appsettings json看起来像下面的代码片段 我正在尝试读取的值ElasticS
  • Spring-roo REST JSON 控制器损坏日期字段

    我有一个以两种方式使用的数据实体 我在页面加载时用其中的一些数据填充表格 当您单击该列的一行时 我通过 AJAX 获取该项目的详细信息并将其显示在表单字段中 我在服务器端使用 Spring Roo 生成的 REST 端点 在客户端使用 Ba
  • 如何在 Hibernate 中自动递增复合主键中的 Id?

    我有一个带有复合主键的表 groupId and batchId 实体类看起来像 Entity name EMPLOYEE public class Employee EmbeddedId private EmployeePK employ
  • Play Framework 2.3 (Scala) 中的自定义 JSON 验证约束

    我设法使用自定义约束实现表单验证 但现在我想对 JSON 数据执行相同的操作 如何将自定义验证规则应用于 JSON 解析器 示例 客户端的 POST 请求包含用户名 username 我不仅要确保该参数是非空文本 而且还要确保该用户确实存在
  • 放置 时覆盖引导程序的托管版本 3.2.0

    当我把
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • Spring Bean 属性“xxx”不可写或具有无效的 setter 方法

    我是一个 Spring 新手 有一个看似简单的 Spring 问题 我为此工作了几个小时 但没有运气 这是例外情况 后面是代码 提前感谢您 Exception in thread main org springframework beans
  • 如何在 Spring 中将多个映射合并为一个

    我的上下文文件中定义了几个地图 有没有一种方法可以将这些映射组合成一个包含其所有条目的映射 而无需编写 Java 代码 并且无需使用嵌套映射 我正在寻找 Map m new HashMap 的等效项m putAll carMap m put
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 没有从 {classpath*:META-INF/persistence.xml} 解析持久性单元

    使用 Spring Core 3 0 5 Hibernate 3 6 0 这个问题的标题是在使用我正在维护的应用程序启动 Tomcat Web 服务器 6 0 29 时引发的 java lang IllegalStateException
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np

随机推荐