I sprężynowo dane reszta aplikacji w oparciu o repozytoriummoduł Jackson obsłużyć abstrakcyjne korzeń kruszywo i jej podklas w Spring Danych REST
public interface CriterionRepository extends JpaRepository<Criterion, Long> {
}
natomiast Criterion
jest klasa bazowa:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Criterion extends AbstractEntity {}
i NameCriterion
jest jego podklasa
@Entity
public class NameCriterion extends Criterion {
private final String name;
}
Eksport danych REST z wiosny on przechowalni jako zasobu REST i można do niego dostęp w http://localhost:8080/api/criteria/
wyeksportowanych zasobów wygląda następująco:
{
"_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
}
}
Kiedy próbuję śledzić link, samodzielne, nie ma odwzorowania dla http://localhost:8080/api/nameCriterion/1
mogę śledzić http://localhost:8080/api/criteria/1 chociaż i dostaję odpowiedź bez nazwy pola z NameCriterion
{
"_links": {
"self": {
"href": "http://localhost:8080/api/nameCriterion/1"
},
"nameCriterion": {
"href": "http://localhost:8080/api/nameCriterion/1"
}
}
}
Zakładam, że jest to problem z programem do mapowania w języku Jackson zdefiniowanym w eksporcie REST, który nie został poprawnie zmodyfikowany do obsługi klasy abstrakcyjnej Criterion
używanej w JpaRepository
jako root agregatu.
Jakie modyfikacje Jackson powinienem zastosować, aby działał poprawnie?
Innymi słowy, jaki moduł Jackson powinienem stworzyć?
Jeśli moja odpowiedź ci pomogła, nie zapomnij jej zaakceptować!) – Cepr0