我有两个关系ManyToMany类,我想创建观众,然后将它们添加到事件,但它抛出“分离”异常。休眠ManyToMany保存
class Event {
@ManyToMany(
fetch = FetchType.LAZY,
targetEntity = Audience.class,
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "UC_EVENT_AUDIENCE",
joinColumns = @JoinColumn(name = "event_id"),
inverseJoinColumns = @JoinColumn(name = "audience_id"))
private List<Audience> targetAudiences = new ArrayList<>();
}
clsas Audience {
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "targetAudiences")
private List<Event> events = new ArrayList<>();
}
public void run(ApplicationArguments args) throws Exception {
//Generate audience data
List<Audience> audiences = dataGenerator.createAudiences();
//Save to db
audienceRepository.save(audiences);
Event event = new Event();
event.setTargetAudiences(audiences);
eventRepository.save(events);
}
你的意思是,如果我会评论“audienceRepository.save(观众)”,然后保存“事件”会保存我的观众?我忽略了“audienceRepository.save(观众)”,它看起来像事件没有保存它,因为当我“查找所有”观众时,什么都没有。 – Evgenii
你是通过事件对象找到观众还是直接找到观众? –
您还必须在保存活动之前为观众设置活动。因为它的双向关系 –