内联抽象类型时根据 child 类 使用不同的投影
Use distinct projections according to child classes when inlining an abstract type
我有以下实体(省略无关部分):
@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 {
...
}
我想使抽象参数 class 的子 classes 的特定属性在使用 'parameterInlinedChart' 投影时出现在 JSON 输出上。
使用上面的例子,如果参数是模拟参数类型,我想要模拟参数的 "resolution" 属性。
如果参数的类型为 DigitalParameter
,则在 "timeSeriesInlinedParameter" 投影上简单地添加此 属性 会引发异常
我尝试创建 AnalogParameter 和 DigitalParameter 独有的投影
但我不知道如何告诉 "parameterInlinedChart" 投影根据要序列化的子参数 class 的类型有条件地使用权利。
这可能吗?
这个问题可能不太容易理解,如果需要我可以提供更多细节。
这目前是不可能的。我创建了 an Improvement request for this and even implemented this in a Pull Request。诚然,这需要对 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 {
...
}
我想使抽象参数 class 的子 classes 的特定属性在使用 'parameterInlinedChart' 投影时出现在 JSON 输出上。
使用上面的例子,如果参数是模拟参数类型,我想要模拟参数的 "resolution" 属性。
如果参数的类型为 DigitalParameter
,则在 "timeSeriesInlinedParameter" 投影上简单地添加此 属性 会引发异常我尝试创建 AnalogParameter 和 DigitalParameter 独有的投影 但我不知道如何告诉 "parameterInlinedChart" 投影根据要序列化的子参数 class 的类型有条件地使用权利。
这可能吗?
这个问题可能不太容易理解,如果需要我可以提供更多细节。
这目前是不可能的。我创建了 an Improvement request for this and even implemented this in a Pull Request。诚然,这需要对 Jackson2 序列化模块的现有结构进行大量更改,以及引入一个新字段来支持投影层次结构,因此尚不清楚何时合并。
如果这对您很重要,也许您可以投票支持 JIRA 问题。