【问题标题】:problem with a bidirectional oneToMany relationship in Java + springJava + spring中双向oneToMany关系的问题
【发布时间】:2018-10-27 21:13:18
【问题描述】:

在一个Java项目+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);

通过记录测验,我在“quiz_question”表中的 quiz_id 列始终为 NULL

感谢您的帮助!

【问题讨论】:

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

标签: spring jpa jakarta-ee


【解决方案1】:

一般@JoinColumn表示实体是关系的所有者,mappedBy表示实体是关系的逆。

所以,如果你想像下面这样尝试

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

这意味着它与关系相反,它不会将父引用设置为其子引用。

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

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

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

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2022-01-24
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多