Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Spring Java+;春天_Spring_Jpa_Jakarta Ee - Fatal编程技术网

Spring Java+;春天

Spring Java+;春天,spring,jpa,jakarta-ee,Spring,Jpa,Jakarta Ee,在Java project+spring中,我有两个类和一个代码来插入数据: @Entity(name = "Quiz") @Table(name = "quiz") @PrimaryKeyJoinColumn(name="id") public class Quiz implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strateg

在Java project+spring中,我有两个类和一个代码来插入数据:

@Entity(name = "Quiz")
@Table(name = "quiz")
@PrimaryKeyJoinColumn(name="id")
public class Quiz implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToMany(mappedBy="quiz", fetch = FetchType.EAGER, cascade=CascadeType.ALL)
    private List<QuizQuestion> quizQuestions= new ArrayList<>();


@Entity(name = "QuizQuestion")
@Table(name = "quiz_question")
@PrimaryKeyJoinColumn(name="id")
public class QuizQuestion implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String text;

    @ManyToOne
    @JoinColumn(name = "quiz_id", referencedColumnName="id")
    private Quiz quiz;

Quiz javaQuiz= new Quiz();
javaQuiz.setName("QCM Java");

QuizQuestion qOne= new QuizQuestion();
qOne.setText("where");

List<QuizQuestion> listQJava= new ArrayList<>();
listQJava.add(qOne);

javaQuiz.setQuizQuestions(listQJava);

quizDao.save(javaQuiz);
@Entity(name=“quick”)
@表(name=“测验”)
@PrimaryKeyJoinColumn(name=“id”)
公共类测验实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
私有字符串名称;
@OneToMany(mappedBy=“quick”,fetch=FetchType.EAGER,cascade=CascadeType.ALL)
private List quizQuestions=new ArrayList();
@实体(name=“QuizQuestion”)
@表(name=“quick\u question”)
@PrimaryKeyJoinColumn(name=“id”)
公共类QuizQuestion实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
私有字符串文本;
@许多酮
@JoinColumn(name=“quick\u id”,referencedColumnName=“id”)
私人问答游戏;
测验javaquick=新测验();
setName(“QCM Java”);
QuizQuestion qOne=新QuizQuestion();
qOne.setText(“其中”);
List listQJava=new ArrayList();
add(qOne);
setQuizQuestions(listQJava);
保存(javaquick);
通过记录测验,我在表“quick\u question”中有一列quick\u id,它总是空的


感谢您的帮助!

通常,@JoinColumn表示实体是关系的所有者,而mappedBy表示实体是关系的反向

所以,如果你想跟随

@OneToMany(mappedBy="quiz", fetch = FetchType.EAGER, cascade=CascadeType.ALL)
private List<QuizQuestion> quizQuestions= new ArrayList<>();
@OneToMany(mappedBy=“quick”,fetch=FetchType.EAGER,cascade=CascadeType.ALL)
private List quizQuestions=new ArrayList();
这意味着它和关系相反,不会将父引用设置为其子引用

要将父引用设置为其子引用,必须按以下方式使上述实体成为关系的所有者

 @OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
 @JoinColumn
 private List<QuizQuestion> quizQuestions= new ArrayList<>();
@OneToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@连接柱
private List quizQuestions=new ArrayList();

您不需要设置任何子引用,因为上面的代码将在子表中创建一列。

这是因为您从未将问题的测验字段设置为null以外的任何值。就这么简单和合乎逻辑。