वर्तमान में मेरे पास स्प्रिंग डेटा रीस्ट का उपयोग करके स्प्रिंग बूट एप्लिकेशन है। मेरे पास एक डोमेन इकाई है 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...
}
उनके स्प्रिंग डेटा रीस्ट जेपीए रिपॉजिटरी मूल कार्यान्वयन हैं CrudRepository
:
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
आवेदन प्रविष्टि बिंदु एक मानक, सरल स्प्रिंग बूट अनुप्रयोग है। सब कुछ कॉन्फ़िगर स्टॉक है।
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
सब कुछ सही ढंग से काम करता दिखाई देता है। जब मैं एप्लिकेशन चलाता हूं, तो सब कुछ सही ढंग से काम करता है। मैं http://localhost:8080/posts
ऐसा करने के लिए एक नई पोस्ट ऑब्जेक्ट पोस्ट कर सकता हूं :
तन:
{"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 के लिए एक टिप्पणी पोस्ट करने की कोशिश करता हूं, तो मुझे HTTP 405 मेथड नॉट अलाउड मिलता है।
Comment
संसाधन बनाने और इसे इसके साथ जोड़ने का सही तरीका क्या है Post
? http://localhost:8080/comments
यदि संभव हो तो मैं सीधे पोस्टिंग से बचना चाहूंगा ।