У меня есть две таблицы с составными ключами и таблица связи между ними, вот так:
A
B
- ставка (PK)
- sharedkey (PK)
Связывание
- помощь
- ставка
- sharedkey
- sortorder
Таким образом, неудобно использовать общий ключ, который является частью обоих FK.Вот первое, что я попробовал (я использую Fluent, но у меня возникла бы такая же проблема с отображениями XML):
mapping.HasManyToMany(x => x.Bees)
.Table("Linking")
.ParentKeyColumns.Add("aid", "sharedkey")
.ChildKeyColumns.Add("bid", "sharedkey")
.OrderBy("sortorder");
, что дает исключение для сопоставления: «Повторяющийся столбец в сопоставлении для сбора»,потому что я вставил sharedkey
дважды.Это имеет смысл, потому что я не говорил в NH, что я действительно хочу, чтобы sharedkey
были одинаковыми в каждом направлении.
Java-версия Hibernate имеет formula
функцию это решает это точно, но NH, AFAIK, нет.Так как я могу отобразить это?
Некоторые предостережения:
- Для этого не обязательно быть в беглости.С XML тоже все хорошо
- Это все только для чтения, поэтому, если решение ломает вставки каким-то забавным способом, это нормально
- Я вообще не могу изменить БД