gpt4 book ai didi

java - Spring Data REST - 排除子类型

转载 作者:行者123 更新时间:2023-11-30 11:03:45 25 4
gpt4 key购买 nike

假设我有以下 Hibernate 实体(省略字段)

@Entity
@DiscriminatorColumn(name = "T")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class SuperClass {
}

@Entity
@DiscriminatorValue(name = "subClassA")
public SubClassA extends SuperClass {
}

@Entity
@DiscriminatorValue(name = "subClassB")
public SubClassB extends SuperClass {
}

使用 Spring Data REST,我将获得以下 JSON 表示形式:

{
"_links": {
},
"_embedded": {
"subclassA": [
{
"field1": "",
"field2": ""
}
],
"subclassB": [
{
"field1": "",
"field2": "",
"field3": ""
}
]
}
}

再次省略 _links 属性。是否有某种我可以使用的配置,以便序列化程序可以忽略子类并进行如下表示:

{
"_links": {
},
"_embedded": {
"superClass": [
{
"field1": "",
"field2": ""
},
{
"field1": "",
"field2": "",
"field3": ""
}
]
}
}

最佳答案

解决该问题的一种方法是实现 RelProvider。您需要做的就是实现它并将其添加到 spring 容器中(这可以完成,但即使用 @Component 注释实现)。

考虑到您只需添加以下实现即可获得您期望的响应(考虑到它会被 spring 扫描):

@Component
public class MessageRelProvider implements RelProvider {

public boolean supports(Class<?> arg0) {
return SuperClass.class.isAssignableFrom(arg0);
}

public String getItemResourceRelFor(Class<?> type) {
return "superClass";
}

public String getCollectionResourceRelFor(Class<?> type) {
return "superClasses";
}

}

关于java - Spring Data REST - 排除子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30214632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com