2017-03-18 7 views
1

私は1時間以上私の頭を掻いていて、解決策を見つけることができませんでした。私は2つのエンティティクラスを持っています。そのうちの一つはQuestions.javaおよびその他のAnswers.java外部キー列が挿入されています。

さQuestion.java

@Entity 
@Table 
public class Questions { 
@Id 
@Column(name = "ques_id") 
private int ques_id; 

@Column(name = "question") 
private String question; 

@Column(name = "type") 
private String type; 

@Column(name = "description") 
private String description; 

@Column(name = "param") 
private String param; 

@Column(name = "maxlength") 
private int maxlength; 

@Column(name = "dependency") 
private String dependency; 

@OneToMany(mappedBy = "questions",targetEntity = Answers.class, cascade = CascadeType.ALL) 
private List<Answers> answers = new ArrayList<>(); 

public int getQues_id() { 
    return ques_id; 
} 

public void setQues_id(int ques_id) { 
    this.ques_id = ques_id; 
} 

public String getQuestion() { 
    return question; 
} 

public void setQuestion(String question) { 
    this.question = question; 
} 

public String getType() { 
    return type; 
} 

public void setType(String type) { 
    this.type = type; 
} 

public String getDescription() { 
    return description; 
} 

public void setDescription(String description) { 
    this.description = description; 
} 

public String getParam() { 
    return param; 
} 

public void setParam(String param) { 
    this.param = param; 
} 

public int getMaxlength() { 
    return maxlength; 
} 

public void setMaxlength(int maxlength) { 
    this.maxlength = maxlength; 
} 

public String getDependency() { 
    return dependency; 
} 

public List<Answers> getAnswers() { 
    return answers; 
} 

public void setAnswers(List<Answers> answers) { 
    this.answers = answers; 
} 

public void setDependency(String dependency) { 
    this.dependency = dependency; 
} 
} 

さAnswers.java

@Entity 
public class Answers { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "id") 
private int id; 

@Column(name = "ans_label") 
private String ans_label; 

@Column(name = "ans_value") 
private int ans_value; 

@Column(name = "ans_weightage") 
private int ans_weightage; 

@Column(name = "is_default") 
private int is_default; 

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
@JoinColumn(name = "ques_id") 
private Questions questions; 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getAns_label() { 
    return ans_label; 
} 

public void setAns_label(String ans_label) { 
    this.ans_label = ans_label; 
} 

public int getAns_value() { 
    return ans_value; 
} 

public void setAns_value(int ans_value) { 
    this.ans_value = ans_value; 
} 

public int getAns_weightage() { 
    return ans_weightage; 
} 

public void setAns_weightage(int ans_weightage) { 
    this.ans_weightage = ans_weightage; 
} 

public int getIs_default() { 
    return is_default; 
} 

public void setIs_default(int is_default) { 
    this.is_default = is_default; 
} 

public Questions getQuestions() { 
    return questions; 
} 

public void setQuestions(Questions questions) { 
    this.questions = questions; 
} 
} 

SaveApiController.java

@RequestMapping(value = "/saveData", method = RequestMethod.POST) 
public void saveData(@RequestBody Questions questionss){ 
    //questions.setAnswers(questionss.getAnswers()); 

    saveQuestions.save(questionss); 

} 

私は郵便配達員から送信しているjsonデータはこのように見えます。

{ 
"id": "31", 
"question": "३. लिङ्ग ?", 
"type": "input_spinner", 
"description": null, 
"param": "", 
"maxlength": "0", 
"dependency": null, 
     "answers": [ 
     { 
      "ans_label": "पुरुष", 
      "ans_value": "1", 
      "ans_weightage": "0", 
      "is_default": "0" 
     }, 
     { 
      "ans_label": "महिला", 
      "ans_value": "2", 
      "ans_weightage": "0", 
      "is_default": "0" 
     }, 
     { 
      "ans_label": "अन्य", 
      "ans_value": "3", 
      "ans_weightage": "0", 
      "is_default": "0" 
     } 
     ] 
    } 

質問と回答のデータはすべて回答テーブルの外部キー列とは別に保存されています。カラム "ques_id"はNULLとして格納されています。

答えて

0

あなたが心に留めておく必要はありものの一つは、保存操作をカスケードするために持続性プロバイダのために、あなたは関係の両側の依存関係を設定する必要があること..です

のでQuesions必要Answersのリストを持ち、それらの回答のそれぞれにQuestionsエンティティへの参照が必要です。それだけでカスケードが起こります。

これがあなたの問題の答えであるかどうかはわかりませんが、試してみてください。

+0

私は両方の側でリファレンスを持っていると思います。 私は質問エンティティにOnetoManyと回答エンティティにManyToOneを注釈しました。関係を作り出すのに十分ではありませんか? –

関連する問題