【发布时间】:2017-10-09 03:10:31
【问题描述】:
我有基于 Spring Data REST 的应用程序和存储库
public interface CriterionRepository extends JpaRepository<Criterion, Long> {
}
而Criterion 是基类:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Criterion extends AbstractEntity {}
而NameCriterion 是它的子类
@Entity
public class NameCriterion extends Criterion {
private final String name;
}
Spring Data REST 将存储库导出为 REST 资源,可以通过 http://localhost:8080/api/criteria/ 访问它
导出的资源如下:
{
"_embedded": {
"nameCriteria": [{
"_links": {
"self": {
"href": "http://localhost:8080/api/nameCriterion/1"
},
"nameCriterion": {
"href": "http://localhost:8080/api/nameCriterion/1"
}
}
}
]
},
"_links": {
"self": {
"href": "http://localhost:8080/api/criteria"
},
"profile": {
"href": "http://localhost:8080/api/profile/criteria"
}
},
"page": {
"size": 20,
"totalElements": 1,
"totalPages": 1,
"number": 0
}
}
当我尝试关注自我链接时,http://localhost:8080/api/nameCriterion/1 没有映射
虽然我可以关注http://localhost:8080/api/criteria/1,但我会从NameCriterion 得到没有name字段的回复
{
"_links": {
"self": {
"href": "http://localhost:8080/api/nameCriterion/1"
},
"nameCriterion": {
"href": "http://localhost:8080/api/nameCriterion/1"
}
}
}
我的假设是 REST 导出器中定义的 Jackson 映射器存在问题,该映射器未正确调整以处理 JpaRepository 中使用的抽象类 Criterion 作为聚合根。
我应该应用什么 Jackson 自定义来使其正常工作?
换句话说,我应该创建什么 Jackson 模块?
【问题讨论】:
-
如果我的回答对你有帮助请不要忘记接受! )
标签: jackson spring-data spring-data-rest