FetchType选项在运行时可能是LAZY和EAGER

时间:2015-11-15 20:41:52

标签: json angularjs spring spring-mvc fasterxml

我有一个非常奇怪的情况要在Spring中处理并使用更快的jackson返回Json。我已经用下面的方式定义了主要的对象结构,

class Obj1
{

@OneToMany(fetch = FetchType.LAZY, mappedBy = "field1")
List<Obj2> objs2;

//Getter and Setter methods

}

拥有类似的对象结构会导致异常,

nested exception is com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role

根据春天的概念,很明显,当更快的杰克逊试图按照我的要求检索数据时,在那个特定时间的会话工厂不存在,因此它会抛出这种例外。无法初始化角色LAZILY的集合。

为了避免这个问题,很明显将fetchType设为EAGER。但这不是我想要的,

使其成为EAGER会触发一个额外的查询,在少数情况下可能是不必要的。是的我只在少数情况下需要Object2类型列表。您现在可能正在考虑使用JsonView。是的,这有效,但不会停止查询影响我的应用程序的后端。

因此,我正在寻找一种仍然保留LAZY并尝试动态获取数据而不会产生此问题的解决方案。我坚信春天肯定会有这种能力,并且会有一种替代方案来处理这种情况。

0 个答案:

没有答案