Spring Java+;春天
在Java project+spring中,我有两个类和一个代码来插入数据: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
@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以外的任何值。就这么简单和合乎逻辑。