|
|
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
всем привет. коллеги помогите плз. расковырять проблему. Дело в следующем. Имеются три класса: Article (abstract), Textile (extends Article), Supplier (extends Person). Отношения между Supplier и Article типа один-ко-многим. Классы Supplier и Textile производятся соответствующими фабриками в разное время. Сначало создаются(читаются из бд) Supplier которые формируют модель для JComboBox , потом Textile. Создание Article выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. ind (типа long) класов Article и Textile имеют разные значения ! Для Textile значение ind=1, a для Article ind=2. Это приводит к тому, что после объединения таблиц - результирующий набор данных пуст. Я закомментировал место, в котором в классе Supplier добавляется новый Article и все работает нормально. Только в этом случае нарушается логика: Supplier уже не имеет обратной связи со своими Article. Сдесь представлен Supplier (Supplier расширяет класс Person): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Сдесь карта Article: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. К сожалению я не очень опытный с Hibernate и я вообще уже не пойму где проблема сокрыта. уже вторые сутки бьюсь. плз хелп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 03:00:57 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
Незнаю, сообственно по твоему вопросу ответить не смогу, ничего не заметил, но несколько общих замечаний. Хибернет хибернатом, но ты не забывай что ты с реляционной базой работаешь. И просто так переложить объектную модель со всем наследованием у тебя ничего хорошего из этого не получится. Хибернат конечно облегчает реализацию наследования, но это не значит что этим можно злоупотреблять. Imho ты взял самую сложную схему "Таблица для каждого класса" и используешь ее слишком часто. При этом чтобы объект сохранить/получить у тебя куча операций будет с разными таблицами. ЗЫ Попробуй другую схему наследования "Единая таблица для иерархии". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 09:52:46 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
вестимо - гомно вопрос... ток ни бельмаса не ясно чо стряслось и шо надо .... по проще расскажи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 10:59:39 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
exppвестимо - гомно вопрос... ток ни бельмаса не ясно чо стряслось и шо надо .... по проще расскажи стряслось то, что в текущей конфигурации отношений между классами - сохранение последних приводит к ошибке. Ошибка возникает в таблицах Article и Textile. По нормальному ключи таблиц (primary key) должны быть идентичными, а у меня хибернейт генерирует разные. Я уже эксперимента ради отдельно проект открыл и там испытал эти связи. В эксерименте эта схема работает нормально, в проекте же глючит. Попробую другую схему применить для реализации наследования. Но если кто поделится опытом - спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 11:31:31 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
покажи тест. из которого ясно что ты делаешь с твоими объедками и покеш лог. и исходники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 11:53:13 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
kadetПо нормальному ключи таблиц (primary key) Вообще, первичный в Article, внешний в Textile должны быть. Подобный маппинг вполне себе можно применять. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 11:58:16 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
exppпокажи тест. из которого ясно что ты делаешь с твоими объедками и покеш лог. и исходники Приложил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 15:58:41 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
zalexaka Вместо ArticleID нужно SupplierID, господин zalexaka . Низкий вам поклон. После корректировки все нормально. zalexaka и почему у вас not-null="false" ведь как я понял(если не ошибаюсь) Article не имеет смысла без Supplier-а Вы правы. Article не имеет смысла без Supplier. Я поставил тут false просто потому, чтобы обойти ошибки, которые вываливаются в самом начале, когда хибер создает таблицы, и из пустых таблиц потом пытается прочитать Article: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 17:41:16 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
kadetЯ поставил тут false просто потому, чтобы обойти ошибки пытается прочитать Article: Код: plaintext 1. Простой bidirectional one-to-many с пом. inverse="true" все чудеса произойдут сами Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 22:32:24 |
|
||
|
hibernate inheritance mapping
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 22:43:31 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34864536&tid=2144360]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 341ms |
| total: | 499ms |

| 0 / 0 |
