【问题标题】:fetch oneToMany and manyToOne using hibernate and @JsonIgnore使用 hibernate 和 @JsonIgnore 获取 oneToMany 和 manyToOne
【发布时间】:2018-10-09 10:34:03
【问题描述】:

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

@JsonIgnore

在 manyToOne 上(在表 B 上的意思)我得到一个错误(无限循环) 为了从表 A 中获取数据,我从表 C 到表 B 将变为空(因为这个注释) 我的问题是:我如何从表 A 到表 B 中获取信息(也许 @JsonIgnore 是错误的?) 我的休眠版本是 5.1.7

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    @JsonIgnore 说:这个字段不需要在 JSON 中显示。 Jackson 库不会尝试填充此字段。

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

    你可以

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

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

    【讨论】:

    • 谢谢,我害怕这个答案 :-),我会选择选项 1。
    【解决方案2】:

    我认为这与 Hibernate 没有任何关系。 你到底什么时候得到错误?我假设整理数据。

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

    【讨论】:

    • 谢谢,但我不明白“编组”是什么意思......无论如何我该如何解决我的问题?
    • @RMagen 您可以从谷歌搜索“编组”是什么开始。
    猜你喜欢
    • 1970-01-01
    • 2020-07-05
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多