У меня есть класс, который содержит отношения «один ко многим». Извлечение работало нормально, затем кто-то коснулся базы данных, и теперь извлечение не заполнило Set.Oracle One-to-Many Retrieve Fail, Hibernate 5.1.1.Final
Отношения:
Родитель Организация: Разрешение Период
@OneToMany(fetch=FetchType.LAZY, mappedBy = "permitPeriodEntity")
@Cascade({CascadeType.ALL})
private Set<SubmittedFormEntity> submittedForms;
дочернего объекта: Представлено Форма
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "PERMIT_ID", insertable = false, updatable = false),
@JoinColumn(name = "PERIOD_ID", insertable = false, updatable = false)
})
private PermitPeriodEntity permitPeriodEntity;
Фактическое SQL Сформирован Когда я передать объект в Бульдозер (Lazy Load)
Hibernate: select submittedf0_.PERMIT_ID as PERMIT_ID9_21_0_, submittedf0_.PERIOD_ID as PERIOD_ID8_21_0_, submittedf0_.FORM_ID as FORM_ID1_21_0_, submittedf0_.FORM_ID as FORM_ID1_21_1_, submittedf0_.CREATED_BY as CREATED_BY2_21_1_, submittedf0_.CREATED_DT as CREATED_DT3_21_1_, submittedf0_.FORM_NUM as FORM_NUM4_21_1_, submittedf0_.FORM_TYPE_CD as FORM_TYPE_CD5_21_1_, submittedf0_.MODIFIED_BY as MODIFIED_BY6_21_1_, submittedf0_.MODIFIED_DT as MODIFIED_DT7_21_1_, submittedf0_.PERIOD_ID as PERIOD_ID8_21_1_, submittedf0_.PERMIT_ID as PERMIT_ID9_21_1_ from TU_SUBMITTED_FORM submittedf0_ where submittedf0_.PERMIT_ID=? and submittedf0_.PERIOD_ID=?
Так зимует зовут SQL, чтобы загрузить эти данные лениво, когда я звоню бульдозер, чтобы отобразить его на мой новый боб, но в отладчике я вижу множество сущностей, хотя в настоящее время initialzed после отображения бульдозера, является пустой, даже если он должен иметь три записи.
Это работает буквально в течение двух недель, и я не изменил никакого кода. Любая идея, почему это вдруг перестанет работать?
Я нашел проблему, изменив тип нагрузки на нетерпение. Спящий режим реверсирует столбцы соединения. Данные этапа, которые мы получили, имели комбинации разрешений/периодов 1,1 2,2 3,3. Теперь, когда мы видим реальные данные, он терпит неудачу, потому что он пытается присоединиться к allowId = periodId и наоборот. –
Я не вернулся к своему компьютеру, но я бы предположил, что имя столбца с указанной ссылкой должно быть добавлено в мои столбцы соединения. –