Al momento ho un'applicazione Spring Boot che utilizza Spring Data REST. Ho un soggetto dominio Post
che ha la @OneToMany
relazione ad un altro soggetto del dominio, Comment
. Queste classi sono strutturate come segue:
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...
}
I loro repository Spring Data REST JPA sono implementazioni di base di CrudRepository
:
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
Il punto di ingresso dell'applicazione è una semplice applicazione Spring Boot standard. Tutto è configurato stock.
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
Tutto sembra funzionare correttamente. Quando eseguo l'applicazione, tutto sembra funzionare correttamente. Posso POSTARE un nuovo oggetto Post in questo http://localhost:8080/posts
modo:
Corpo:
{"author":"testAuthor", "title":"test", "content":"hello world"}
Risultato a 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"
}
}
}
Tuttavia, quando eseguo un GET su http://localhost:8080/posts/1/comments
ottengo {}
restituito un oggetto vuoto e se provo a POST un commento allo stesso URI, ottengo un metodo HTTP 405 non consentito.
Qual è il modo corretto per creare una Comment
risorsa e associarla a questa Post
? Vorrei evitare di POSTARE direttamente a, http://localhost:8080/comments
se possibile.