Java Jersey:实体数据筛选和继承字段

Java Jersey:实体数据筛选和继承字段,java,reflection,jersey,moxy,Java,Reflection,Jersey,Moxy,Jersey手册中关于实体数据过滤的章节显示了示例中类似的代码 而父项看起来是这样的: public class Child extends Parent { private String baz; private Foo foo; // Some non-primitive type. // ... } public abstract class Parent { private int bar; // ... } 如果我在上面的preWriteTo(

Jersey手册中关于实体数据过滤的章节显示了示例中类似的代码

而父项看起来是这样的:

public class Child extends Parent {
    private String baz;
    private Foo foo;  // Some non-primitive type.
    // ...
}
public abstract class Parent {
   private int bar;
   // ...
}
如果我在上面的
preWriteTo()
中调用
objectGraph.getFields()
,我将在
Child
中看到
baz
字段,但在
Parent
中看不到
bar
。同样,如果我遍历
objectGraph.getSubgraphs()
的内容,我将看到
Child
中的
foo
,但不会看到
Parent
中的非基元类型。请注意,
bar
和来自
Parent
的其他字段被正确编组到JSON输出中(在本例中使用MOXy),因此我们知道JAXB正在工作

缺少对继承字段的访问是故意的吗?在这个逻辑中,我想检查父类中的字段,并将Jersey
ObjectGraph
手动转换为MOXy等效项,但可以根据调用方的指定包含或删除字段。如果无法访问输出中包含的每个字段,则无法执行此操作

请注意,我使用的是Jersey 2.4和MOXy 2.5.1。

检查Java反射api 及
要从objectGraph.getEntityClass()获取所需的所有信息,我已请求对此进行修复,目前正在等待OCA清除。希望它在2.7版本中


这实际上不仅仅是一个反射问题,因为我们在这里看到的是字段和方法的JAXB名称(我在文章中没有列出方法,但它们是存在的)。所以问题是为什么Jersey不让我看到继承类上的JAXB名称,即使它知道它们在那里,并且MOXy会正确地处理它们。我可以自己做所有JAXB风格的反射,但那将是混乱和烦人的。请对我们的JIRA-进行改进。我认为我们可以支持实体层次结构,但必须回答几个问题,即实体筛选范围是否应在子类中继承或重写(让我们将讨论转移到JIRA问题上)。完成:
public abstract class Parent {
   private int bar;
   // ...
}