Ссылка на объединенную сущность, когда столбец внешнего ключа находится в объединенной таблице - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть следующие сопоставления классов: Учебник:

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, и я не понимаю, как сделать то же самое в беглом отображении.

Не могу изменить схему БД.

Какое правильное отображение карт для моей проблемы?

Редактировать: Обновлены сопоставления, чтобы они отображали точные сопоставления, которые у меня есть.

1 Ответ

0 голосов
/ 14 сентября 2011

Ответ, который вы указали, указывает имя таблицы на множестве.Это можно легко сделать на беглом языке:

HasMany(a => a.Books).Table("BOOKS_EXTRA_INFO");
...