現在、Spring Data RESTを使用したSpring Bootアプリケーションがあります。別のドメインエンティティとの関係をPost
持つドメインエンティティがあります。これらのクラスは次のように構成されています。@OneToMany
Comment
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...
}
これらのSpring Data REST JPAリポジトリは、の基本的な実装ですCrudRepository
。
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
アプリケーションのエントリポイントは、標準のシンプルなSpring Bootアプリケーションです。すべてが構成済みの在庫です。
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
すべてが正しく機能しているようです。アプリケーションを実行すると、すべてが正しく動作しているように見えます。新しいPostオブジェクトを次のhttp://localhost:8080/posts
ようにPOSTできます。
体:
{"author":"testAuthor", "title":"test", "content":"hello world"}
の結果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"
}
}
}
ただし、GETを実行するとhttp://localhost:8080/posts/1/comments
、空のオブジェクトが{}
返され、同じURIにコメントをPOSTしようとすると、HTTP 405メソッドが許可されません。
Comment
リソースを作成してこれに関連付ける正しい方法は何Post
ですか?http://localhost:8080/comments
できれば直接POSTするのは避けたいです。