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 时它应该自动完成。
双向关联的所有者端在IdentityCard
和Phone
实体中,这等同于说mappedBy
在Lodger
中' s 协会。
因此,为了链接的持久性,您必须 在 IdentityCard
和 Phone
实体中设置 lodger 属性。没有必要将此实体添加到 Lodger
的集合中,但这很好,因为您想使用 cascade 选项将此实体与 Lodger
一起保存。
我有一个拥有很多对象的实体
@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 时它应该自动完成。
双向关联的所有者端在IdentityCard
和Phone
实体中,这等同于说mappedBy
在Lodger
中' s 协会。
因此,为了链接的持久性,您必须 在 IdentityCard
和 Phone
实体中设置 lodger 属性。没有必要将此实体添加到 Lodger
的集合中,但这很好,因为您想使用 cascade 选项将此实体与 Lodger
一起保存。