Spring 启动 Hibernate 不持久化嵌套实体

Spring boot Hibernate not persisting nested entities

我有一个 table 'skills' 和一个 table 'answers' (我知道应该是单数)。技能与答案有关系,因为它可以有多个:

技能实体:

@OneToMany(mappedBy = "skills", fetch = FetchType.EAGER)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private Set<Answers> answers = new HashSet<>();

回答class:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;

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

@Max(value = 1)
@Column(name = "weight")
private Integer weight;

@ManyToOne(optional = false)
@NotNull
@JsonIgnoreProperties(value = "answers", allowSetters = true)
private Skills skills;

当我使用以下数据创建新技能时:

{
   "name":"Hello",
   "shorthand":"EE",
   "answers":[
      {
         "answer":"answer 1",
         "weight":1
      },
      {
         "answer":"answer 2",
         "weight":2
      },
      {
         "answer":"answer 3",
         "weight":3
      },
      {
         "answer":"answer 4",
         "weight":4
      },
      {
         "answer":"answer 5",
         "weight":5
      }
   ]
}

我收到以下回复:

{
  "id": 1255,
  "name": "Hello",
  "shorthand": "EE",
  "answers": [
    {
      "id": null,
      "answer": "answer 1",
      "weight": 1,
      "skills": null
    },
    {
      "id": null,
      "answer": "answer 2",
      "weight": 2,
      "skills": null
    },
    {
      "id": null,
      "answer": "answer 3",
      "weight": 3,
      "skills": null
    },
    {
      "id": null,
      "answer": "answer 4",
      "weight": 4,
      "skills": null
    },
    {
      "id": null,
      "answer": "answer 5",
      "weight": 5,
      "skills": null
    }
  ],
}

如您所见,该技能的 ID 已生成,因为它是一个新实体,但答案不会发生这种情况,每个答案都会返回 null 的 ID + 它们不会保留在数据库中。我做错了什么,任何帮助都会很好。

您忘记在 @OneToMany 中指定 cascade 属性。

例子:

@OneToMany(mappedBy = "skills", fetch = FetchType.EAGER, cascade = CascadeType.ALL)