[英]Spring data rest override nested property POST handler
我有一個Spring Data Rest存儲庫
public interface ProjectRepository extends CrudRepository<Project, Integer> {}
對於以下實體:
@javax.persistence.Entity
@Table(name = "project", uniqueConstraints = {@UniqueConstraint(columnNames = {"owner_id", "title"})})
public class Project {
@Id
@Column(name = "project_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
...
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "project_document", joinColumns = {
@JoinColumn(name = "project_id", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "document_id",
nullable = false, updatable = false) })
private Set<Document> documents;
...
}
我想覆蓋嵌套documents
集合的POST處理程序,並遵循建議的方法 。
@RepositoryRestController
public class DocumentController {
@RequestMapping(value = "/projects/{projectId}/documents", method = RequestMethod.POST)
public Document postDocument(
final @PathVariable int projectId,
final @RequestPart("file") MultipartFile documentFile,
final @RequestPart("description") String description
) throws IOException {
...
}
}
但是當我啟動嵌套的POST時,它仍然使用原始的Spring生成的POST處理程序並拋出不支持的媒體類型錯誤。
當我改變@RepositoryRestController
到@RestController
,正確的POST處理程序使用,但對於彈簧產生的CRUD方法documents
的子資源project
不會被導出。
嘗試這樣的事情:
@RequiredArgsConstructor
@RepositoryRestController
@RequestMapping("/projects/{id}")
public class ProjectsController {
private final @NonNull DocumentRepository documentRepository;
@PostMapping("/documents")
public ResponseEntity<?> postDocument(@PathVariable("id") Project project, @RequestBody Document document) {
if (project == null) {
throw new Exception("Project is not found!");
}
if (document == null) {
throw new Exception("Document is not found");
}
Document savedDocument = documentRepository.save(document.setProject(project));
return new ResponseEntity<>(new Resource<>(savedDocument), CREATED);
}
}
工作實例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.