Saat ini saya memiliki aplikasi Spring Boot menggunakan Spring Data REST. Saya memiliki entitas domain Post
yang memiliki @OneToMany
hubungan dengan entitas domain lain Comment
,. Kelas-kelas ini disusun sebagai berikut:
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...
}
Repositori JPA Spring Data REST mereka adalah implementasi dasar dari CrudRepository
:
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
Titik masuk aplikasi adalah aplikasi Spring Boot standar dan sederhana. Semuanya sudah dikonfigurasi stok.
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
Semuanya tampak bekerja dengan benar. Ketika saya menjalankan aplikasi, semuanya tampak bekerja dengan benar. Saya dapat POST objek Post baru untuk http://localhost:8080/posts
menyukainya:
Tubuh:
{"author":"testAuthor", "title":"test", "content":"hello world"}
Hasil di 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"
}
}
}
Namun, ketika saya melakukan GET di http://localhost:8080/posts/1/comments
saya mendapatkan objek kosong {}
dikembalikan, dan jika saya mencoba untuk mengirim komentar ke URI yang sama, saya mendapatkan Metode HTTP 405 Tidak Diizinkan.
Apa cara yang benar untuk membuat Comment
sumber daya dan mengaitkannya dengan ini Post
? Saya ingin menghindari POST langsung ke http://localhost:8080/comments
jika memungkinkan.