Java 内联抽象类型时,根据子类使用不同的投影

Java 内联抽象类型时,根据子类使用不同的投影,java,spring,spring-data-rest,Java,Spring,Spring Data Rest,我有以下实体(未注明不相关部分): 我希望在使用'parameterInlinedChart'投影时,使抽象参数类的childs类的特定属性显示在JSON输出上 使用上面的示例,如果参数的类型为AnalogParameter,我希望获得AnalogParameter的“resolution”属性 如果参数类型为DigitalParameter,只需在“timeSeriesInlinedParameter”投影上添加此属性就会引发异常 我试图创建AnalogParameter和DigitalPar

我有以下实体(未注明不相关部分):

我希望在使用'parameterInlinedChart'投影时,使抽象参数类的childs类的特定属性显示在JSON输出上

使用上面的示例,如果参数的类型为AnalogParameter,我希望获得AnalogParameter的“resolution”属性

如果参数类型为DigitalParameter,只需在“timeSeriesInlinedParameter”投影上添加此属性就会引发异常

我试图创建AnalogParameter和DigitalParameter的独家投影 但是我不知道如何告诉“parameterInlinedChart”投影根据要序列化的子参数类的类型条件使用正确的

有可能吗


这个问题可能不容易理解,如果需要,我可以提供更多细节。

这目前是不可能的。我已经为此创建了,甚至在中实现了它。诚然,这需要对Jackson2序列化模块的现有结构进行大量更改,并引入一个新字段来支持投影层次结构,因此不清楚何时合并


如果JIRA问题对你很重要,也许你可以投票支持它。

这目前是不可能的。我已经为此创建了,甚至在中实现了它。诚然,这需要对Jackson2序列化模块的现有结构进行大量更改,并引入一个新字段来支持投影层次结构,因此不清楚何时合并


如果JIRA问题对您很重要,或许您可以投票支持它。

非常感谢,您似乎为实现这一目标付出了艰苦的努力,这是非常了不起的。关于我的问题,我通过删除继承级别作为临时解决方案简化了域实体。但我仍然对这个功能感兴趣。非常感谢,看来你为实现这个功能付出了很多努力。这真是太了不起了。关于我的问题,我通过删除继承级别作为临时解决方案简化了域实体。但我仍然对这个特性感兴趣。
@Entity    
public class Chart {

    @ManyToOne
    private Parameter parameter;

}

@Entity
@DiscriminatorColumn(name="category")
public abstract class Parameter {

    private String label;    

    @OneToMany(mappedBy="parameter")
    private Set<TimeSerie> timeSeries = new HashSet<TimeSerie>();

    ...
}

@Entity
@DiscriminatorValue(value="analog")
public class AnalogParameter extends Parameter {

    private String resolution;

}

@Entity
@DiscriminatorValue(value="digital")
public class DigitalParameter extends Parameter {
    ...
}
@Projection(name = "parameterInlinedChart, types = { Chart.class })
public interface ParameterInlinedChart {
    TimeSeriesInlinedParameter getParameter();
}

@Projection(name = "timeSeriesInlinedParameter , types = { Parameter.class })
public interface TimeSeriesInlinedParameter {
    ...
}