Derzeit habe ich eine Spring Boot-Anwendung, die Spring Data REST verwendet. Ich habe eine Domänenentität, Post
die die @OneToMany
Beziehung zu einer anderen Domänenentität hat Comment
. Diese Klassen sind wie folgt aufgebaut:
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...
}
Ihre Spring Data REST JPA-Repositorys sind grundlegende Implementierungen von CrudRepository
:
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
Der Anwendungseinstiegspunkt ist eine einfache Standard-Spring-Boot-Anwendung. Alles ist Lager konfiguriert.
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
Alles scheint richtig zu funktionieren. Wenn ich die Anwendung ausführe, scheint alles korrekt zu funktionieren. Ich kann ein neues Post-Objekt http://localhost:8080/posts
POSTEN, um es so zu mögen:
Körper:
{"author":"testAuthor", "title":"test", "content":"hello world"}
Ergebnis bei 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"
}
}
}
Wenn ich jedoch ein GET bei ausführe http://localhost:8080/posts/1/comments
, wird ein leeres Objekt {}
zurückgegeben, und wenn ich versuche, einen Kommentar an denselben URI zu senden, wird eine HTTP 405-Methode nicht zulässig angezeigt.
Wie kann eine Comment
Ressource richtig erstellt und damit verknüpft werden Post
? Ich möchte es vermeiden, http://localhost:8080/comments
wenn möglich direkt zu posten .