Spring JPa Id 为空

Spring JPa Id empty

我有一个拥有很多对象的实体

@Entity
public class Lodger implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long lodgerId;

  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "lodger")
  private List<IdentityCard> identityCardList;

  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "lodger")
 private List<Phone> phoneList;
 ...

}

@Entity
public class IdentityCard {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long identityCardId;

  private String identyCardValue;

  @OneToOne
  @JoinColumn(name = "identity_card_type_id") //without -> identity_card_type_identityCardTypeId
  private IdentityCardType identityCardType;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "lodger_id")
  private Lodger lodger;
}

当我保存我的房客时,我所有的对象都被保存了(identiyCard,phone),但是他们的字段lodger_id是空的

我在想当我们使用 cascadeType.all 时它应该自动完成。

双向关联的所有者端在IdentityCardPhone实体中,这等同于说mappedByLodger中' s 协会。

因此,为了链接的持久性,您必须 IdentityCardPhone 实体中设置 lodger 属性。没有必要将此实体添加到 Lodger 的集合中,但这很好,因为您想使用 cascade 选项将此实体与 Lodger 一起保存。