Actualmente tengo una aplicación Spring Boot que usa Spring Data REST. Tengo una entidad del dominio Post
que tiene la @OneToMany
relación de dominio a otra entidad, Comment
. Estas clases están estructuradas de la siguiente manera:
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...
}
Comentario.java:
@Entity
public class Comment {
@Id
@GeneratedValue
private long id;
private String author;
private String content;
@ManyToOne
private Post post;
// Standard getters and setters...
}
Sus repositorios Spring Data REST JPA son implementaciones básicas de CrudRepository
:
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
El punto de entrada de la aplicación es una aplicación Spring Boot estándar y simple. Todo está configurado stock.
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
Todo parece funcionar correctamente. Cuando ejecuto la aplicación, todo parece funcionar correctamente. Puedo PUBLICAR un nuevo objeto de publicación para que me http://localhost:8080/posts
guste:
Cuerpo:
{"author":"testAuthor", "title":"test", "content":"hello world"}
Resultado en 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"
}
}
}
Sin embargo, cuando realizo un GET en http://localhost:8080/posts/1/comments
, obtengo un objeto vacío {}
devuelto, y si intento PUBLICAR un comentario en el mismo URI, obtengo un Método HTTP 405 No permitido.
¿Cuál es la forma correcta de crear un Comment
recurso y asociarlo a este Post
? Me gustaría evitar PUBLICAR directamente a http://localhost:8080/comments
si es posible.