|
|
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Хочу добавить связь OneToOne, делаю так: Код: java 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. Пытаюсь сохранить: Код: java 1. 2. 3. 4. В проекте включена автогенерация схемы СУБД. При вышеуказанном конфиге JPA не создает столбец Address.user_id ну и естественно связь между данными не устанавливается. Никаких предупреждений и ошибок при деплое нет. При всем этом, если изменить владельца связи: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. То все начинает работать ожидаемо. В чем соль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 08:31 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
HettВ проекте включена автогенерация схемы СУБД. а как же ОРМ узнает какой вам вариант из трёх надо? 19133239 В жизни в СУБД бывает 3 варианта один ко многим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 10:34 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Petro123HettВ проекте включена автогенерация схемы СУБД. а как же ОРМ узнает какой вам вариант из трёх надо? 19133239 В жизни в СУБД бывает 3 варианта один ко многим. У меня OneToOne, какие тут варианты могут быть? Да и оба конфига равнозначные (по крайней мере в моем понимании). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 10:42 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
HettУ меня OneToOne, какие тут варианты могут быть? Ты не читаешь что тебе пишут? Выше по ссылке даны 3 варианта бизнес-маппинга и 2 варианта реализации табличек в БД. Какая строчка непонятна? Я бы не писал их тебе, если бы ты не генерировал БД по маппингу. Это мало кто делает. Все делают наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 10:45 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
HettДа и оба конфига равнозначные (по крайней мере в моем понимании). у тебя 2 варианта: - запомнить тот что у тебя рабочий и идти дальше - разбираться с конфигом @Embedded\ Not @Embedded \... И там будут видны различия. Легче запомнить и идти дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 10:53 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Petro123, я не спрашивал какие существуют варианты реализации табличек, я реализовал так как мне удобно. В твоем списке это третий вариант и у меня по нему конкретный вопрос, если не можешь на него ответить, не разводи флуд. Embedded тут вообще не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 11:11 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Hett, OK HettТо все начинает работать ожидаемо. В чем соль? Это Helo World для JPA в 3-м варианте. Надо просто запомнить. В этом соль. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 11:31 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Единственная мысль, которая приходит в голову: Владелец связи в данном случае определяет, какая на таблицу будет ссылаться (т.е. в какой таблице будет находиться констрейнт). Если рассматривать мой пример, то таблица User не может содержать констрейт с поля id на поле Address.user_id, так как поле id - PK. Странно, что хибер не генерит никаких ошибок или предупреждений по этому поводу. Видимо решением остается располагать констрейнт в таблице Address, а в User указывать mapped. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 13:40 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
HettСтранно, что хибер не генерит никаких ошибок или предупреждений по этому поводу. основная задача ОРМ - маппинг _существующей_ схемы БД. Остальное только фичи и "синтаксический сахар". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 13:59 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Petro123HettСтранно, что хибер не генерит никаких ошибок или предупреждений по этому поводу. основная задача ОРМ - маппинг _существующей_ схемы БД. Остальное только фичи и "синтаксический сахар". Хватит тут прибибикивать. В любом случае ОРМ могла бы хотя бы возмутиться такому факту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 14:08 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
HettХватит тут прибибикивать. угу. Так все свитчевавшиеся в Java из PHP\Делфи говорят)). Начинают делать тут революцию (JSF\EE) и негодовать). LOL Где спека что тебе должны? (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 14:26 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
HettВ чем соль?Возможно необходимо указать явно, что поле уникальное: Hett Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:07 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Usman, неа, говорит Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:14 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Hett Код: plaintext Hett Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:19 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Неа, все так же. Если в схеме есть колонка, то он туда null вставляет. Если удалить таблицу, то hibernate создает новую без колонки user_id Он и ограничение не создает, видимо как-то "не видит связи", или видит ее как-то не так. Может быть он смотрит на колонку id, видит так ограничение в виде PK и на этом успокаивается? Откуда ему знать, что надо создавать ограничение с Address.user_id на User.id а не наоборот, если овнером связи является User ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:34 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Hett, у тебя в обеих сущностях простые id с именем "id", плюс ты генеришь базу из сущностей. вопрос - зачем @JoinColumn? сделай Код: java 1. 2. и в обратную сторону (от адреса к юзеру) тоже самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 12:42 |
|
||
|
JPA: OneToOne relation owner
|
|||
|---|---|---|---|
|
#18+
Юрий321, Гммм, спасибо. Если не указывать JoinColumn, то он в общем-то и одностороннюю связь делает нормально. Код: java 1. 2. Код: java 1. 2. Конфиг там идентичный следующему будет: Код: java 1. 2. 3. Если mappedBy не указывать, то получается 2 разные связи. Вроде разобрался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 13:04 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39453347&tid=2122920]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 388ms |

| 0 / 0 |
