Spring - Hibernate Jackson映射

时间:2017-03-20 19:25:39

标签: json spring hibernate jackson jackson2

我有两个人在一边建立多对多的关系

Category.java:

@ManyToMany()
@JoinTable(
    name = "categories_articles",
    joinColumns = @JoinColumn(name = "categoryID", referencedColumnName = "id"),
    inverseJoinColumns = @JoinColumn(name = "articleID", referencedColumnName = "id"))
private List<Article> articles = new ArrayList<Article>();

在另一方面Article.java:

@ManyToMany(mappedBy = "articles")
private List<Category> categories = new ArrayList<Category>();

加上getter和setter ..

当我在浏览器中加载时,我得到例外:

failed to lazily initialize a collection of role ... JsonMappingException

有没有人可以帮我解决这个问题?

我应该编写自己的序列化程序吗?

谢谢和问候!

2 个答案:

答案 0 :(得分:0)

由于您在Hibernate Session对象之外访问您的Object,所以:

  • @JsonIgnore注释
  • 下添加@ManyToMany

  • 添加@ManyToMany(fetch = FetchType.EAGER) - 来自DB
  • 的此加载项

您也可以尝试使用@LazyCollection(LazyCollectionOption.FALSE)代替early fetch

答案 1 :(得分:0)

一个非常简单的解决方案是在服务层方法之上使用 @Transactional 注释,这会使会话保持打开状态直到执行结束。