我正在用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是否应该这样做,或者其他人是否有此问题。
答案 0 :(得分:1)
当我们使用3-rd party libraries
作为返回数据类型并将其提供给Jackson
序列化过程时,会发生这种情况。 PanacheEntity
扩展了PanacheEntityBase,其中包含isPersistent
方法,Jackson
将其视为POJO
getter
方法。
public boolean isPersistent() {
return JpaOperations.isPersistent(this);
}
Jackson
自动采用所有get*
和is*
方法,并尝试对其进行序列化并包括结果JSON
。无法在quarkus
级别进行配置。具有JsonIgnore
和MixIn
功能的解决方案是不错的选择。
答案 1 :(得分:0)
在Json-B中添加您的实体:
@JsonbTransient
public boolean isPersistent() {
return super.isPersistent();
}