У меня есть две таблицы, 1-я таблица содержит company_id, имя_компании и название страны, а вторая таблица содержит детали, связанные с компанией, с одним сопоставлением.Hibernate One-to-One Сопоставление не получения данных дочернего класса с родительским классом
Это моя структура таблицы: -
company {
company_id int,
company_name varchar,
country varchar
}
company_detail {
id int,
company_id int,
company_description text,
future_goal text
}
После отображения, используемого в POJO: -
В компании POJO: -
@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="COMPANY_ID")
private CompanyDetails companyDetails;
В CompanyDetail POJO: -
@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="COMPANY_ID")
public Company company;
Но когда я получаю объект компании, он содержит null в companyDetails.
После код, используемый для получения объекта компании -
Company company = (Company) session.get(Company.class, companyId);
Я хочу, чтобы получить данные companyDetails вместе с данными компании.
Я делаю что-то неправильно? Какие изменения кода необходимы для устранения этой проблемы.
Ваше поле является частным классом 'CompanyCaptiveDetails' но ваш POJO называется' CompanyDetail' , Объясните пожалуйста – henrik
Извините, я исправил свой вопрос. Теперь посмотрим –
Прочитайте документацию о спящем режиме для двунаправленных ассоциаций. одна сторона (та, которая не имеет внешнего ключа) должна быть обратная с другой стороны, используя mappedBy. В вашем сопоставлении вы определяете две отдельные связи между собой. И вы сообщаете, что company.company_id - это столбец объединения (например, внешний ключ) для company_detail.id, что неверно. Я не вижу смысла в этих двух таблицах. Вы могли бы просто положить все в таблицу компаний. –