将 JPA (EclipseLink) Java 序列化更改为使用 Jackson / json
Changing JPA (EclipseLink) Java serialization to using Jackson / json
我有兴趣使用 Jackson 引擎将 EclipseLink JPA 中的默认 java 序列化替换为 json。
有没有 属性 可以为我的所有设置设置序列化引擎的地方?
我知道 EclipseLink 支持使用 MOXY 序列化 json 但我在使用它时遇到其他问题。
我正在寻找一些全局设置,这些设置将使我无需将 @Convert 添加到数百个 类。
例如:
Class A {
String B;
String C;
}
@Entity
Class D {
A a;
}
默认情况下,JPA 会将字段 'a' 存储为字节数组,同时使用 java 序列化生成数组。
我想将其更改为文本并将 Class A 存储为 json.
事实证明,使用 SessionEventListener 可以很容易地完成此操作,它将所有 java 序列化转换替换为您自己的基于 Jackson 的自定义转换。
通过使用以下行初始化 Jackson:
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
您可以支持复杂的继承方案和几乎任何 java class 需要的(在极少数情况下您可以添加特殊转换)。
您可以在以下位置找到更多数据:Replacing JPA java serialization engine to JSON
我有兴趣使用 Jackson 引擎将 EclipseLink JPA 中的默认 java 序列化替换为 json。
有没有 属性 可以为我的所有设置设置序列化引擎的地方?
我知道 EclipseLink 支持使用 MOXY 序列化 json 但我在使用它时遇到其他问题。
我正在寻找一些全局设置,这些设置将使我无需将 @Convert 添加到数百个 类。
例如:
Class A {
String B;
String C;
}
@Entity
Class D {
A a;
}
默认情况下,JPA 会将字段 'a' 存储为字节数组,同时使用 java 序列化生成数组。 我想将其更改为文本并将 Class A 存储为 json.
事实证明,使用 SessionEventListener 可以很容易地完成此操作,它将所有 java 序列化转换替换为您自己的基于 Jackson 的自定义转换。
通过使用以下行初始化 Jackson:
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
您可以支持复杂的继承方案和几乎任何 java class 需要的(在极少数情况下您可以添加特殊转换)。
您可以在以下位置找到更多数据:Replacing JPA java serialization engine to JSON