将JPA(EclipseLink)Java序列化更改为使用Jackson/json

将JPA(EclipseLink)Java序列化更改为使用Jackson/json,java,jpa,serialization,eclipselink,Java,Jpa,Serialization,Eclipselink,我对使用Jackson引擎将EclipseLink JPA中的默认java序列化替换为json感兴趣。 是否有可以为所有设置设置序列化引擎的属性? 我知道EclipseLink支持使用MOXY序列化json,但我在使用它时还有其他问题。 我正在寻找一些全局设置,这将使我从添加@Convert到数百个类中解脱出来 例如: Class A { String B; String C; } @Entity Class D { A a; } 默认情况下,JPA将字段“a”存储为字节数组,同时

我对使用Jackson引擎将EclipseLink JPA中的默认java序列化替换为json感兴趣。 是否有可以为所有设置设置序列化引擎的属性? 我知道EclipseLink支持使用MOXY序列化json,但我在使用它时还有其他问题。 我正在寻找一些全局设置,这将使我从添加@Convert到数百个类中解脱出来

例如:

Class A {
  String B;
  String C;
}
@Entity
Class D {
  A a;
}
默认情况下,JPA将字段“a”存储为字节数组,同时使用java序列化生成数组。
我想将其更改为文本并将类A存储为json。

事实证明,使用SessionEventListener可以非常轻松地完成这项工作,它将所有java序列化转换替换为自定义的基于Jackson的转换。 通过使用以下行初始化Jackson:

    objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
您可以支持复杂的继承场景,并且几乎任何java类都可以添加特殊的转换

您可以在以下位置找到更多数据: