У меня есть следующие сопоставления классов:
Учебник:
Table("BOOKS")
Id(b => b.Id)
Join("BOOKS_EXTRA_INFO", j =>
{
j.Optional();
j.References(b => b.Author);
}
Класс Автор:
TABLE("AUTHORES")
Id(a => a.Id)
HasMany(a => a.Books).Table("BOOKS_EXTRA_INFO")
Проблема с этим отображением заключается в том, что, когда я пытаюсь сделать следующее:
var a = Session.Get<Author>(1);
Коллекция книг пуста. Я проверил SQL, который генерирует NH, и проблема в предложении where:
Select ... WHERE BOOKS.AUTHOR_ID = 1
Правильное условие Где должно быть:
Select ... WHERE BOOKS_EXTRA_INFO.AUTHOR_ID = 1
Я нашел этот вопрос: Hibernate ключ от объединенной таблицы , который действительно похож (если не совпадает с) на мой вопрос, но решение использует сопоставления XML, и я не понимаю, как сделать то же самое в беглом отображении.
Не могу изменить схему БД.
Какое правильное отображение карт для моей проблемы?
Редактировать: Обновлены сопоставления, чтобы они отображали точные сопоставления, которые у меня есть.