Actuellement, j'ai une application Spring Boot utilisant Spring Data REST. J'ai une entité de domaine Post
qui a la @OneToMany
relation à une autre entité de domaine, Comment
. Ces classes sont structurées comme suit:
Post.java:
@Entity
public class Post {
@Id
@GeneratedValue
private long id;
private String author;
private String content;
private String title;
@OneToMany
private List<Comment> comments;
// Standard getters and setters...
}
Comment.java:
@Entity
public class Comment {
@Id
@GeneratedValue
private long id;
private String author;
private String content;
@ManyToOne
private Post post;
// Standard getters and setters...
}
Leurs référentiels Spring Data REST JPA sont des implémentations de base de CrudRepository
:
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
Le point d'entrée de l'application est une application Spring Boot standard et simple. Tout est configuré en stock.
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
Tout semble fonctionner correctement. Lorsque j'exécute l'application, tout semble fonctionner correctement. Je peux POSTER un nouvel objet Post pour http://localhost:8080/posts
aimer ainsi:
Corps:
{"author":"testAuthor", "title":"test", "content":"hello world"}
Résultat à http://localhost:8080/posts/1
:
{
"author": "testAuthor",
"content": "hello world",
"title": "test",
"_links": {
"self": {
"href": "http://localhost:8080/posts/1"
},
"comments": {
"href": "http://localhost:8080/posts/1/comments"
}
}
}
Cependant, lorsque j'effectue un GET à, http://localhost:8080/posts/1/comments
j'obtiens un objet vide {}
renvoyé, et si j'essaie de POSTER un commentaire sur le même URI, j'obtiens une méthode HTTP 405 non autorisée.
Quelle est la bonne façon de créer une Comment
ressource et de l'associer à celle-ci Post
? J'aimerais éviter de poster directement sur http://localhost:8080/comments
si possible.