我有3个实体:Book
(父对象)、AntiqueBook
(扩展书籍)、ScienceJournal
(扩展书籍)。
AntiqueBook和ScienceJournal与Book的区别在于它们都比父对象多一个属性(分别为releaseYear
和scienceindex
)。
控制器中用于创建新Book对象的端点:
@PostMapping("/books")
Book newBook(@RequestBody Book book) {
return service.save(book);
}
使用中的方法:
public Book save(Book book) {
return repository.save(book);
}
- 如何仅使用此终结点创建AntiqueBook和ScienceJournal对象?例如,检查@RequestBody是否具有属性releaseYear(创建AntiqueBook)或scienceIndex(创建ScienceJournal)。如果它不具有这两个属性中的任何一个,则创建Book。**
目前,作为一种解决方案,我为AntiqueBook和ScienceJournal创建了两个额外的终结点,但我希望避免这种情况。我还遇到了"更新"终结点的问题。如果我能解决这个问题,那么我也能解决那个问题。
1条答案
按热度按时间x7yiwoj41#
您必须使用
@JsonTypeInfo
和@JsonSubtypes
注解Book DTO,以便Jackson/Spring知道如何解组它。下面是一个例子: