2

我正在设计一个带有 REST Web 服务的非常简单的 Web 应用程序,该服务利用 JPA 与 PostgreSQL 数据库进行交互并在 TomEE 中运行。我的 JPA 实体具有双向映射,我希望我的 REST 服务以 XML 和 JSON 的形式使用/生成这些 JPA 实体。

XML 序列化工作正常,因为我在每个双向映射的一侧使用 @XmlTransient 注释,以防止序列化期间出现无限循环。

不幸的是,在 JSON 序列化期间,我进入了一个无限循环并生成了 StackOverflowError。我假设由于 TomEE 使用 Apache CXF,它也会使用 Jettison,我认为 Jettison 尊重 @XmlTransient 注释。

但是,看起来 TomEE 实际上是在使用 Johnzon,而且这似乎不尊重 @XmlTransient 注释。我如何告诉 Johnzon 忽略某些字段?我可以以某种方式使用 JSON-B 规范中的 @JsonbTransient 注释吗?我不想链接到 Johnzon,但我尝试这样做是为了使用 @JohnzonIgnore 注释而没有效果。我最好强迫 TomEE 使用 Jettison 吗?有什么建议么?

您可以自己重现此错误,因为 TomEE 在其网站上发布的 rest-example 具有相同的问题,http ://tomee.apache.org/examples-trunk/rest-example/README.html 。

4

0 回答 0