У меня есть особая проблема с модульным тестом с использованием встроенного контейнера OpenEJB. У меня двунаправленная связь между двумя классами. В одном направлении отношение работает должным образом, но в противоположном направлении оно работает только в режиме EAGER. В режиме LAZY поле section
остается пустым. Отрезанный код выглядит следующим образом:
@Entity
@Table(name="tracks")
class TrackEntity implements Track {
@Id
private int trackNumber;
@OneToMany(mappedBy = "track")
private HashSet<SectionEntity> sections;
public TrackEntity() {
sections = new HashSet<SectionEntity>();
}
@Override
public Collection<HistoricalEvent> getEvents() {
if (sections == null)
throw new CommonError("number=" + trackNumber, AppErrors.TRACK_EMPTY);
TreeSet<HistoricalEvent> set = new TreeSet<HistoricalEvent>();
for (SectionEntity se : sections)
set.addAll(se.getEvents());
return set;
}
}
Мой код немного специфичен. Класс использует поле sections
только для внутреннего объединения всех подколлекций. Я не могу заполнить разделы лениво . Я предполагаю, что контейнер ожидает, что клиент получит доступ к полю извне через геттер.