В моем случае у меня есть две таблицы: родительский 'VDI_DICT_EMPOYEES_SV' и chield 'VDI_DICT_EMPOYEES_RV', объединенные столбцом с тем же именем 'R_OBJECT_ID'. (См. Диаграмму ER)
Структура родительского объекта:
@Entity
@Table(name="VDI_DICT_EMPLOYEE_SV")
public class DmDictEmployee {
@Column (name="R_OBJECT_ID") private String objectId;
... other columns are skipped...
@ElementCollection
@CollectionTable(name="VDI_EMPLOYEE_RV, joinColumns=@JoinColumn(name="CROC_SECRETARY_ID",referencedColumnName="R_OBJECT_ID"))
private List<String> crocSecretaryIds; // the element collection
... getters and setters are skipped too...
}
Для извлечения мастера иведомые данные я использую нативный @Query
"SELECT parent.*, chield.CROC_SECRETARY_ID from VDI_DICT_EMPLOYEE_SV parent left outer join VDI_DICT_EMPLOYEE_RV chield on parent.R_OBJECT_ID=chield.R_OBJECT_ID"
(при этом выбирается запись сотрудника со списком секретарей в одном окне выбора)
И все работает нормально, как я вижу из журнала. Запрос возвращает данные просто отлично. Но когда я пытаюсь получить список crocSecretaryIds, я вижу, что HIBERNATE готовит SQL, который включает имя коллекции: "SELECT CROC_SECRETARY_ID, crocSecretaryIds FROM VDI_DICT_EMPLOYEES_RV WHERE R_OBJECT_ID =) ... *
, что довольно странно. Я ожидал увидеть SQL-запрос без crocSecretaryIds , поэтому я предполагаю, что что-то не так с моим объявлением столбца @ElementCollection. Не могли бы вы посоветовать какие-либо идеи о том, что пропущено и почему HIBERNATE готовит запрос с crocSecretaryIds ?