|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
Есть маппинг файл. Пытаюсь в нем разобраться что к чему. С коллекцией что-то не ладное творится, не все значения по запросу из БД выходят. Структура такая: Код: xml 1. 2. 3. 4. 5.
Вообще вопросов несколько. Не хватает знаний то ли в коллекциях, то ли еще в чем. Не могу понять зачем нужны индексы. Т.е. index-many-to-many с левой сущностью в структуре. Ускоряет поиск? Насколько я понимаю, map должен содержать в себе ключ (FirstID) и значение (AnotherClass). Шо за индексы тут появились не понимаю. Читал маннуал по хибернейту и по nhibernate, но там настолько сухо все написано... inverse="true" - что за зверь еще интересует.. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2013, 15:12 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
vitach, index-many-to-many - подробнее читайте у Ayende . Inverse показывает, по какой стороне двусторонней ассоциации хибер будет определять живучесть ассоциации. Позволяет избежать лишнего update при сохранении сущности. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2013, 15:55 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
В общем проблема там с хешированием Iesi.Collections.SortedSet. Алгоритм хеширования от Iesi считает хэш как-то по-своему и не все элементы выдергиваются из базы. Попробовал заменить на стандартный HashSet от System.Collections он работает нормально, но теперь при добавлении значений в коллекцию не обновляется число элементов, транзакции находятся внутри BeginTransaction() и transaction.Commit. Грешу на то что для работы хибера нужен все-таки Iesi. Как решить проблему с хешированием? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:04 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
vitach, как переопределили Equals() и GetHashCode()? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:47 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
SolYUtor, Не переопределял ничего... В классе есть свойство: Код: c# 1.
И функция: Код: c# 1. 2. 3. 4.
Я функцию заменил на: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:38 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
vitachНе переопределял ничего... В классе есть свойство: Это и есть ошибка. Чтобы словари и хеш-сеты работали правильно, вы должны переопределять Equals и GetHashCode. Рекомендую посмотреть, как это сделано здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:52 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
SolYUtor, Спасибо, будем разбираться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:59 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
SolYUtor, Переопределил указанные функции. Хэш теперь правильно вычисляется. Но вот проблема одна осталась не понятная мне. Как я уже писал выше функция в классе выглядит так: Код: c# 1. 2. 3. 4.
Соответственно SubjectCourseSorter вот такой: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Code представляет собой строку типа "ОПД.Ф.20" и всегда заканчивается числом. Так вот если у элементов этот код одинаковый, то функция вставляет только один обьект в SortedSet из всех элементов с таким кодом. Если я возвращаю HashedSet вместо SortedSet, который тоже от Iesi, то все норм... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 13:17 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
vitachCode представляет собой строку типа "ОПД.Ф.20"Учебный план второго поколения? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 14:40 |
|
Коллекция <map/>. Не могу понять смысл аттрибута <index-many-to-many/>.
|
|||
---|---|---|---|
#18+
vitach, vitachCode представляет собой строку типа "ОПД.Ф.20" и всегда заканчивается числом. Так вот если у элементов этот код одинаковый, то функция вставляет только один обьект в SortedSet из всех элементов с таким кодом. Если я возвращаю HashedSet вместо SortedSet, который тоже от Iesi, то все норм... Set'ы - это коллекции уникальных элементов. Соответственно, если SubjectCourseSorter говорит что дав объекта равны, один из них будет выкинут как дубликат. Так что или дополняйте SubjectCourseSorter уникальностью для одного кода, или используйте другой Set. Для вашего метода я бы посоветовал ImmutableSet из Iesi.Collections. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 15:17 |
|
|
start [/forum/topic.php?fid=17&fpage=25&tid=1349986]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 289ms |
total: | 450ms |
0 / 0 |