【问题标题】:What does @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) do?@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) 做什么?
【发布时间】:2021-07-24 23:19:12
【问题描述】:

下面这段代码在 Java Sprint Boot 中做了什么?

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

【问题讨论】:

标签: java spring-boot


【解决方案1】:

当您拥有带有 @Entity 注释的 JPA / Hibernate 实体时,并且当您使用存储库从数据库中获取数据或使用父实体中的 getMethod() 获取从父实体延迟加载的字段时, hibernate 返回一个对象,该对象将具有映射到 DB 表的类的所有字段/属性。除了这些字段之外,该对象还将有两个额外的字段hibernateLazyInitializerhandler,用于延迟加载实体。

如果您有任何直接或间接使用 Jackson 库以 JSON 字符串格式序列化此实体的用例(也许如果您将实体作为它返回到任何 REST API 响应,或者如果您将实体存储到 JSON 数据存储,例如Elasticsearch),JPA 实体将使用所有字段和hibernateLazyInitializerhandler 作为额外字段进行序列化。因此,如果您不忽略这些字段,它们将被序列化为 JSON 格式,您可以通过读取 JSON 字符串来查看。

因此,为了避免这种不必要的序列化,您必须在 JPA / Hibernate 实体上编写这段代码,这将告诉 Jackson 库“序列化 JSON 不应包含字段 hibernateLazyInitializerhandler。如果您在对象,忽略它们”:

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-25
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多