У меня есть одно отношение многие ко многим в моей модели. Есть две организации: Чрезвычайные ситуации и Экипажи (экипажи могут присутствовать во многих аварийных ситуациях и наоборот). Части кода, отвечающие за отношения, выглядят следующим образом:
@JoinTable(name = "CREWS_ON_EMERGENCIES", joinColumns = {
@JoinColumn(name = "EMERGENCY_ID", referencedColumnName = "EMERGENCY_ID", nullable = false)}, inverseJoinColumns = {
@JoinColumn(name = "CREW_ID", referencedColumnName = "CREW_ID", nullable = false)})
@ManyToMany(fetch= FetchType.EAGER)
private Collection<Crew> crewList;
и
@ManyToMany(mappedBy="crewList", fetch= FetchType.EAGER)
private Collection<Emergency> emergencyList;
Экипаж является зависимым объектом - emergencyList обновляется, когда я добавляю новую аварийную ситуацию со списком присутствующих экипажей.
На самом деле, база данных обновляется нормально, и новые записи появляются в таблице CREWS_ON_EMERGENCIES сразу после закрытия транзакции. Но если добавить новую аварийную ситуацию, а затем отобразить список всех экипажей и аварийных ситуаций, в которых они участвовали, последняя аварийная ситуация не будет отображаться (очевидно, «emergencyList» устарел). Он появится только при перезапуске сервера (Tomcat) или в режиме отладки.
Код аварийного сохранения ():
@Transactional
public void save(Emergency e) {
entityManager.persist(e);
entityManager.flush();
}
Выбранные экипажи автоматически добавляются в коллекцию crewList Spring MVC.
Кто-нибудь знает, почему это происходит таким образом, и каково решение?