"persistent" 字段应该出现在序列化的 PanacheEntity 中吗?
Should "persistent" field appear in serialized PanacheEntity?
我正在 quarkus 中构建一个简单的 Jaxrs api。当我调用我的索引方法时,它看起来像杰克逊使用 persistent
字段序列化对象,它从 PanacheEntityBase
.
获得
示例:
[
{
"persistent": true,
"id": 1,
"createdAt": "2019-03-18",
"updatedAt": "2019-03-18"
},
{
"persistent": true,
"id": 2,
"createdAt": "2019-03-18",
"updatedAt": "2019-03-18"
}
]
persistent
字段未保存到数据库中,但会显示在响应中。我研究过使用 @jsonIgnore
和 jackson mixins,但我宁愿不必这样做,尤其是如果这只是一个配置问题。我很好奇 Panache 是否应该这样做,或者其他人是否遇到了这个问题。
当我们使用 3-rd party libraries
作为返回数据类型并将其提供给 Jackson
序列化过程时,就会发生这种情况。 PanacheEntity
extends PanacheEntityBase 其中包含 isPersistent
方法,Jackson
将其视为 POJO
getter
方法。
public boolean isPersistent() {
return JpaOperations.isPersistent(this);
}
Jackson
自动采用所有 get*
和 is*
方法并尝试将其序列化并包含到结果 JSON
中。无法在 quarkus
级别配置它。您使用 JsonIgnore
和 MixIn
功能的解决方案是一个很好的方法。
使用 Json-B 添加您的实体:
@JsonbTransient
public boolean isPersistent() {
return super.isPersistent();
}
我正在 quarkus 中构建一个简单的 Jaxrs api。当我调用我的索引方法时,它看起来像杰克逊使用 persistent
字段序列化对象,它从 PanacheEntityBase
.
示例:
[
{
"persistent": true,
"id": 1,
"createdAt": "2019-03-18",
"updatedAt": "2019-03-18"
},
{
"persistent": true,
"id": 2,
"createdAt": "2019-03-18",
"updatedAt": "2019-03-18"
}
]
persistent
字段未保存到数据库中,但会显示在响应中。我研究过使用 @jsonIgnore
和 jackson mixins,但我宁愿不必这样做,尤其是如果这只是一个配置问题。我很好奇 Panache 是否应该这样做,或者其他人是否遇到了这个问题。
当我们使用 3-rd party libraries
作为返回数据类型并将其提供给 Jackson
序列化过程时,就会发生这种情况。 PanacheEntity
extends PanacheEntityBase 其中包含 isPersistent
方法,Jackson
将其视为 POJO
getter
方法。
public boolean isPersistent() {
return JpaOperations.isPersistent(this);
}
Jackson
自动采用所有 get*
和 is*
方法并尝试将其序列化并包含到结果 JSON
中。无法在 quarkus
级别配置它。您使用 JsonIgnore
和 MixIn
功能的解决方案是一个很好的方法。
使用 Json-B 添加您的实体:
@JsonbTransient
public boolean isPersistent() {
return super.isPersistent();
}