我正在设计一个非常简单的Web应用程序,它使用REST 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在其网站上发布的其余示例具有相同的问题,http://tomee.apache.org/examples-trunk/rest-example/README.html .