【问题标题】:non fetched entity appears in JSON result未获取的实体出现在 JSON 结果中
【发布时间】:2019-07-16 10:23:20
【问题描述】:

我有一个用户实体:

@Entity(name = "users")
@DynamicUpdate
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
    @JsonIgnore
    @JsonIgnoreProperties("user")
    private Set<Car> cars;
}

还有一个汽车实体:

@Entity(name = "cars")
@DynamicUpdate
public class Car implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "plate_number")
    @JsonView(View.Summary.class)
    private String plateNumber;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="user_id")
    @JsonIgnore
    @JsonManagedReference("user-coordinate")
    @Access(value = AccessType.FIELD)
    private User user;
}

当我得到汽车列表时,我得到了这个:

{
            "id": 5,
            "plateNumber": "aaaaada",
            "user": {
                "id": 110,
                "name": null
            }
        },

但我想得到这个(没有用户实体!):

{
            "id": 5,
            "plateNumber": "aaaaada",
        },

我有 7 年的 PHP 经验(我说它知道我熟悉如何搜索和获得我想要的东西)但我是 java spring 的初学者我搜索了很多答案我得到的是它与杰克逊有关,但我不知道如何解决,请帮我详细说明,我将不胜感激。

谢谢

【问题讨论】:

标签: spring hibernate jackson


【解决方案1】:

您正在使用覆盖@JsonIgnore 的@JsonManagedReference("user-coordinate")

JsonManagedReference 指示 Jackson 在序列化汽车时对用户进行序列化,因此如果您希望用户不被序列化,则需要将其删除以便发生 @JsonIgnore

【讨论】:

  • 突然成功了!在此之后,我做了同样的事情,但它没有工作我首先添加了 JsonIgnore 并测试它没有工作,然后添加了 JsonManagedReference 现在它工作了!!
  • 这取决于注释的顺序,如果 JsonIgnore 排在最后,它将起作用
  • 非常感谢,现在我应该如何处理整数类型的 user_id apears 我创建了一个列名为 user_id 的新变量,但它给了我一个重复列名的错误,我应该如何获取这个字段作为整数
  • 在 Car 表中创建 user_id?您与用户的加入列是“user_id”,这就是您重复的原因
  • 对不起,问题仍然存在,当它是最新的时候,我只是不小心删除了用户属性的 getter 和 setter,所以当我取消注释它们时,用户字段再次出现
【解决方案2】:

对于任何有这个问题的人来说,我有两个依赖于我正在使用的 JsonIgnore:

org.codehaus.jackson.annotate

这就是我改成的问题:

com.fasterxml.jackson.annotation

问题解决了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多