J'ai un référentiel de repos de données Springdonnées de printemps override reste propriété nichée de gestionnaire POST
public interface ProjectRepository extends CrudRepository<Project, Integer> {}
pour l'entité suivante:
@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;
...
}
Je veux remplacer le gestionnaire POST de la collection documents
imbriquée et suis le recommended approach.
@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 {
...
}
}
Mais quand je lance le POST imbriqué, il utilise toujours le gestionnaire POST généré Spring original et lancers francs erreur non prise en charge de type de média.
Quand je change @RepositoryRestController
à @RestController
, le gestionnaire correct POST est utilisé, mais ne sont pas exportées méthodes CRUD générées par ressort pour documents
de sous-ressource project
.