Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过Spring数据Rest创建新的n:n关系行';s柱_Java_Mysql_Spring_Hibernate_Spring Data Rest - Fatal编程技术网

Java 如何通过Spring数据Rest创建新的n:n关系行';s柱

Java 如何通过Spring数据Rest创建新的n:n关系行';s柱,java,mysql,spring,hibernate,spring-data-rest,Java,Mysql,Spring,Hibernate,Spring Data Rest,我在DB中有一个n:n关系: 以下是问题的实体: package data.entity; import javax.persistence.*; import java.io.Serializable; import java.util.HashSet; import java.util.Set; @Entity @Table(name = "question") public class Question implements Serializable { private int i

我在DB中有一个n:n关系:

以下是问题的实体:

package data.entity;

import javax.persistence.*;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

@Entity
@Table(name = "question")
public class Question implements Serializable {

private int id;
private String text;
private String detailText;
private String helpNotes;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, insertable = true, updatable = true)
public int getId() {
    return id;
}

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

private Set<QuestionnaireQuestion> questionnaireQuestions = new HashSet<QuestionnaireQuestion>(0);

@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.question", cascade=CascadeType.ALL)
public Set<QuestionnaireQuestion> getQuestionnaireQuestions() {
    return this.questionnaireQuestions;
}

public void setQuestionnaireQuestions(Set<QuestionnaireQuestion> questionnaireQuestions) {
    this.questionnaireQuestions = questionnaireQuestions;
}

@Basic
@Column(name = "text", nullable = true, insertable = true, updatable = true, length = 45)
public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}

@Basic
@Column(name = "detail_text", nullable = true, insertable = true, updatable = true, length = 45)
public String getDetailText() {
    return detailText;
}

public void setDetailText(String detailText) {
    this.detailText = detailText;
}

@Basic
@Column(name = "help_notes", nullable = true, insertable = true, updatable = true, length = 45)
public String getHelpNotes() {
    return helpNotes;
}

public void setHelpNotes(String helpNotes) {
    this.helpNotes = helpNotes;
}

}
PK等级:

package data.entity;

import javax.persistence.Embeddable;
import javax.persistence.ManyToOne;
import java.io.Serializable;

@Embeddable
public class QuestionnaireQuestionPK implements Serializable {

private Question question;
private Questionnaire questionnaire;

@ManyToOne
public Question getQuestion() {
    return question;
}

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

@ManyToOne
public Questionnaire getQuestionnaire() {
    return questionnaire;
}

public void setQuestionnaire(Questionnaire questionnaire) {
    this.questionnaire = questionnaire;
}

}
我正在使用Spring Data Rest为每个实体创建一个资源:

  • /问题:
  • /问卷调查
  • /问题请求
我可以通过以下方式创建问题(例如):

但是,当您尝试通过创建一个调查问卷\问题行将问题与调查问卷联系起来时,请执行以下操作:

curl -i -X POST -H "Content-Type:application/json" -d '{ "questionnaire": "http://localhost:8080/questionnaire/1", "question": "http://localhost/question/1", "order": 1 }' http://localhost/questionnaireQuestion
我得到了这个错误:“MySQL服务器版本的正确语法使用近'顺序,开始日期,问题id,问卷id)值(null,'1',null,null,”

问题id和调查问卷id无效。此外,字段应替换为字符“`”。我使用的是“mysql5innodbdial”

我做错了什么-(

已编辑

“order”是MySQL中的一个保留字,我更改了“position”的“order”字段,但仍然存在void FK问题:

{“原因”:{“原因”:{“原因”:null,“消息”:“列'question_id'不能为空”},“消息”:“列'question_id'不能为空”},“消息”:“列'question_id'不能为空;SQL[n/a];约束[null];嵌套异常为org.hibernate.exception.ConstraintViolationException:列'question_id'不能为空”}

package data.entity;

import javax.persistence.Embeddable;
import javax.persistence.ManyToOne;
import java.io.Serializable;

@Embeddable
public class QuestionnaireQuestionPK implements Serializable {

private Question question;
private Questionnaire questionnaire;

@ManyToOne
public Question getQuestion() {
    return question;
}

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

@ManyToOne
public Questionnaire getQuestionnaire() {
    return questionnaire;
}

public void setQuestionnaire(Questionnaire questionnaire) {
    this.questionnaire = questionnaire;
}

}
curl -i -X POST -H "Content-Type:application/json" http://localhost/question -d '{"text":"bla bla", "detail_text": "bla bla"}'
curl -i -X POST -H "Content-Type:application/json" -d '{ "questionnaire": "http://localhost:8080/questionnaire/1", "question": "http://localhost/question/1", "order": 1 }' http://localhost/questionnaireQuestion