使用休眠和@JsonIgnore来获取oneToMany和manyToOne

时间:2018-10-09 10:34:04

标签: java hibernate

我有一个与ToToy关系中的表B相关的表A (意味着B在manyToOne中相关),两个关系都设置为EAGER 我看到了,除非我添加以下注释

@JsonIgnore

在manyToOne上(意味着在表B上)我收到一个错误(无限循环) 我从表C到表B的什么是为了从表A获取数据,它是空的(由于此注释) 我的问题是:如何从表B的表A中获取信息(也许@JsonIgnore是错误的?) 我的休眠版本是5.1.7

2 个答案:

答案 0 :(得分:1)

@JsonIgnore说:不需要将此字段显示在JSON中。杰克逊图书馆不会尝试填充此字段。

但是一旦删除@JsonIgnore,它将导致Jackson进行无数次调用,以获取A的B数据,然后获取B的A数据,此调用将进入Hibernate,并且会出现错误。

您可以

  1. 重新考虑您的架构
  2. 使用DTO对象
  3. 构建自定义查询,然后构建响应

我会先检查选项2,然后可能要检查1。

答案 1 :(得分:0)

我认为这与Hibernate没有任何关系。 您确切何时会收到错误消息?我假设要整理数据。

这正是@JsonIgnore为何提供帮助的原因。 没有它,编组B类的对象将包括A对象。编组A的对象包括所有相关的B对象。你有问题吗?