
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
14.08.2013, 10:52:59
|
|||
|---|---|---|---|
Как правильно сохранить в БД объект HashMap |
|||
|
#18+
Доброго времени. Я столкнулся со значительными трудностями, пытаясь осуществить описанное в заголовке темы. Начну с того, что раньше такого никогда делать не доводилось, получалоcь все корректно только для простых типов данных. Подробнее о том, что нужно. Есть некая таблица с id в качестве ключевого поля и объект HashMap, который тоже требуется сохранить в БД, не создавая для него отдельный entity-класс. Порывшись в интернете, выкопал такую конструкцию: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Пустая таблица, разумеется, создается, но ума не приложу, как теперь корректно сохранить этот Map. Допустим, все выглядит так: id таблицы Map связанная таблица после сохранения ------------ --------- id weight 1 <1, 0.05> ------------- 7 <3, 1.22> 1 0.05 12 <7, 0.3> 7 0.3 15 <15, 0.4> 15 0.4 18 <20. 0.5> Можно ли добиться такого результата, имея только Map? Или все-таки надо создавать метод, который будет анализировать каждый id из родительской таблицы и сравнивать его с id из Map? Повторюсь - сохранение таких объектов для меня вещь абсолютно новая, в интернете не нашел подходящего объяснения, поэтому рассчитываю на помощь русскоязычных и понимающих в этом деле товарищей. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2013, 10:57:37
|
|||
|---|---|---|---|
Как правильно сохранить в БД объект HashMap |
|||
|
#18+
Извиняюсь, эскиз таблиц получился кособоким, прилагаю графическое изображение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2013, 13:42:50
|
|||
|---|---|---|---|
|
|||
Как правильно сохранить в БД объект HashMap |
|||
|
#18+
Все правильно, будет создана таблица T_INVEST_PLAN_WEIGHT с полями (ACCOUNT_ID,key_column,value_column), а в программе она будет видна как поле-карта. Работать с ней как с отдельной таблицей не придется, хибернейт представит ее в виде готового объекта. Например, при сохранении такого объекта Account = {id:1, weights:{1:0.05, 2:0.06}} в таблицу будет сохранено: Код: plaintext 1. 2. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2013, 14:04:51
|
|||
|---|---|---|---|
Как правильно сохранить в БД объект HashMap |
|||
|
#18+
ivanra , , спасибо за замечание про инициализацию карты - я как-то забыл впопыхах об этом. Указанный вами результат я уже получил, но он меня как бы не совсем устраивает. Допустим, Map такой: {<1, 0.5>,<2, 0.3>,<5, 0.8>,<7, 0.7>}, тогда при сохранении получается такая таблица (если в исходной таблицы есть id с номерами 1 и 2): 1 1 0.5 1 2 0.3 1 5 0.8 1 7 0.7 2 1 0.5 2 2 0.3 2 5 0.8 2 7 0.7 А мне бы хотелось получить такую: 1 1 0.5 2 2 0.3 т.е. чтобы значения вносились только в том случае, если id исходной таблицы равен key из карты. Можно ли сделать так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2013, 15:15:27
|
|||
|---|---|---|---|
Как правильно сохранить в БД объект HashMap |
|||
|
#18+
Полуламерне создавая для него отдельный entity-класс imho т.к. тебе нужен ID счётчик уже готовый из Map тогда нужно (для хибера) переопределять этот счётчик. Забей на красивости. Ты просил - он сохранил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2128811]: |
0ms |
get settings: |
15ms |
get forum list: |
28ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
55ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 311ms |
| total: | 509ms |

| 0 / 0 |
