0
@RestController
public class TopicController {
@Autowired
private TopicService topicService;
@RequestMapping(value="/topics", method= RequestMethod.GET)
public List<Topic> getAllTopics(){
return topicService.getAllTopics();
}
@RequestMapping(value="/topics/{id}", method= RequestMethod.GET)
public Topic getTopic(@PathVariable String id){
return topicService.getTopic(id);
}
@RequestMapping(value="/topics", method= RequestMethod.POST)
public void addTopic(@RequestBody Topic topic){
topicService.addTopic(topic);
}
@RequestMapping(value="/topics/{id}", method= RequestMethod.PUT)
public void updateTopic(@RequestBody Topic topic, @PathVariable String id){
topicService.updateTopic(id, topic);
}
@RequestMapping(value="/topics/{id}", method= RequestMethod.DELETE)
public void deleteTopic(@PathVariable String id){
topicService.deleteTopic(id);
}
}
ControllerクラスのリストPOST項目春ブーツ
@Service
public class TopicService {
@Autowired
private TopicRepository topicRepo;
public List<Topic> getAllTopics(){
return (List<Topic>)topicRepo.findAll();
}
public Topic getTopic(String id){
return topicRepo.findOne(id);
}
public void addTopic(Topic topic){
//topics.add(topic);
topicRepo.save(topic);
}
public void updateTopic(String id, Topic topic) {
topicRepo.save(topic);
}
public void deleteTopic(String id) {
//topics.removeIf(t -> t.getId().equals(id));
//topics.removeIf((Topic t) -> t.getId().equals(id));
topicRepo.delete(id);
}
}
サービスクラス
@Repository
public interface TopicRepository extends CrudRepository<Topic, String>{
//List<Course> findByTopic_Id(String topicid);
}
リポジトリクラス
@Entity
public class Topic {
@Id
@Column(name="TOPIC_ID")
private String id;
@Column(name="NAME")
private String name;
@Column(name="DESCRIPTION")
private String description;
@OneToMany(mappedBy="topic", fetch = FetchType.EAGER)
@JsonManagedReference
private List<Course> course = new ArrayList<Course>();
//no - argument constructor. Needed for hibernate
public Topic(){};
public Topic(String id, String name, String description, List<Course> course){
super();
this.id = id;
this.name = name;
this.description = description;
this.course = course;
}
public Topic(String id, String name, String description){
super();
this.id = id;
this.name = name;
this.description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<Course> getCourse() {
return course;
}
public void setCourse(List<Course> course) {
this.course = course;
}
}
トピッククラス
@Entity
public class Course{
@Id
@Column(name="COURSE_ID")
private String id;
private String name;
private String description;
//There could be many courses related to 1 topic
@ManyToOne
@JoinColumn(name = "TOPIC_ID")
@JsonBackReference
private Topic topic;
public Course(){};
public Course(String id, String name, String description){
super();
this.id = id;
this.name = name;
this.description = description;
}
public Topic getTopic() {
return topic;
}
public void setTopic(Topic topic) {
this.topic = topic;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
コースクラス
私は、SQLデータベースに多くのコースが含まれているトピックのクラスを投稿するポストマンを使用しようとしています。ポストマンで
、私はしかし、私はすべてのトピックを取得し、対応するんとき、私の応答はそれがコースを拾っていない
{
"id": "700",
"name": "How to countt",
"description": "Counting numbersssss",
"course": []
}
たこの
{
"id": "700",
"name": "How to countt",
"description": "Counting numbersssss",
"course": [
{
"id": "1",
"name": "php",
"description": "gooddddyyyy stuff"
},
{
"id": "2",
"name": "phpp",
"description": "gooddddyyyy stuffp"
}
]
}
のようなJSONを使用してPOSTをしました私はそれを投稿した。 1つのトピックには多くのコースがあります。どのように私はこれを修正するのですか?ありがとうございました
私はTopic.setcourse(コース)のようにコースオブジェクトをトピックに渡す必要があるということですか? – Desmond
No.トピックにはコースが1つもなく、多くのトピックがあります。そして、このコースのコレクションにはJacksonが住んでいます。その逆は真実ではない。コースにはトピックの参照がありません。したがって、各コースのトピックを設定する必要があります: 'course.setTopic(topic)'。 –