【问题标题】:Ignore @Transient fields of an entity automatically during json serialization在json序列化期间自动忽略实体的@Transient字段
【发布时间】:2015-02-24 20:47:14
【问题描述】:

我在应用程序中使用hibernate和spring mvc进行实体持久性我在应用程序的一个实体中有多个@Transient字段有没有办法告诉Json解析器自动忽略实体中的所有@Transient注释字段不需要使用@JsonIgnore 或@JsonIgnoreProperties

【问题讨论】:

  • @Transient 表示该字段不是持久化的。 @JsonIgnore 表示该字段将被序列化/反序列化处理器忽略,它们的含义非常不同。
  • 我知道,但我要求一种方法来自动忽略所有瞬态字段,而不将 @JsonIgnore 添加到文件中
  • 你为什么不想使用@JsonIgnore?这有充分的理由吗?

标签: java spring hibernate spring-mvc jackson


【解决方案1】:

@Transient 表示该字段不是持久的。 @JsonIgnore 表示该字段将被序列化/反序列化处理器忽略,它们具有非常不同的含义。

一个选项是从可用字段(相对于 getter/setter)中进行基于 Json 处理器的串行/反序列化,然后使用附加的 transient 关键字标记您的 @Transient 字段。如果您有 getter/setter,您还需要添加适当的可见性规则。例如,这将序列化所有未标记为transient 的字段。

@JsonAutoDetect(fieldVisibility=Visibility.ANY, getterVisibility=Visibility.NONE, setterVisibility = Visibility.NONE)

【讨论】:

  • 我试过了,但这隐藏了除了瞬态字段之外的所有内容
  • 抱歉被打断了,因为我正在重写答案。我忘了包括 fieldVisibility=Visibility.ANY
【解决方案2】:

我找到了一种更好的方法,而不是对实体中的字段使用@jsonignore 在子类上使用 JsonBackreference,在父类上使用 JsonManagedReference For more information go through this blog post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 2010-11-27
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多