Я субъект, который принадлежит много объектовSpring JPA Id пустой
@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, телефон), но их Поле lodger_id имеет значение.
Я думал, что это должно было быть сделано автоматически, когда мы используем cascadeType.all.
какая другая возможность? –
@roberttrudel - это способ сделать это для двунаправленной ассоциации «один ко многим». Вы можете попробовать «обходной путь», если вы хотите, чтобы сторона владельца в Lodger: используйте «много-ко-многим» вместо «один-ко-многим»/«много-к-одному», установите mappedBy в Phone и IdentCard, и вы должны добавить дополнительные элементы управления чтобы эти объекты были связаны только с одним жильцом (например, с уникальным контролем-ограничением по полю id телефона таблицы соединений) – Guillermo