|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor Конструкции типа author.getBook().setAuthor(author) на мой взгляд неправильные. Для чего в книге, которая сидит в авторе указывать ее автора? Сам написал))) После этого данные записываются нормально) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:00 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Вручную я ссылки нигде не расставлял. Мне казалось, что этим должен был заняться hibernate после указаний аннотаций. Конструкции типа author.getBook().setAuthor(author) на мой взгляд неправильные. Для чего в книге, которая сидит в авторе указывать ее автора? Хибернейт всего лишь отображает объектные ссылки(в памяти твоей программы) на реляционные таблицы(связи по foreign key). Если объекты в памяти никак не связаны - то как хибернейт может догадаться сделать это? Либо book должен содержать authorId, либо Author должен иметь коллекцию books(в памяти). Тогда хибер все сделает сам(при правильном маппинге). Если ссылки нулевые - то на что тогда надеяться? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:01 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Сам написал))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:04 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor Сам написал))) Зашел в тупик) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:12 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Зашел в тупик) И не бреши про 600 страниц. Ленивых тут не любят. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:14 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник Crunkor Вручную я ссылки нигде не расставлял. Мне казалось, что этим должен был заняться hibernate после указаний аннотаций. Конструкции типа author.getBook().setAuthor(author) на мой взгляд неправильные. Для чего в книге, которая сидит в авторе указывать ее автора? Хибернейт всего лишь отображает объектные ссылки(в памяти твоей программы) на реляционные таблицы(связи по foreign key). Если объекты в памяти никак не связаны - то как хибернейт может догадаться сделать это? Либо book должен содержать authorId, либо Author должен иметь коллекцию books(в памяти). Тогда хибер все сделает сам(при правильном маппинге). Если ссылки нулевые - то на что тогда надеяться? У таблицы book есть поле author_id которое является внешним ключом к полю id таблицы author. У меня проблема с маппингом? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:15 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor У таблицы book есть поле author_id которое является внешним ключом к полю id таблицы author. У меня проблема с маппингом? Ты так и не ответил на вопрос - после создания объекта через JAXB - ссылки в памяти расставлены правильно? Останови в дебаггере и посмотри. Если расставлены - то да, проблема в маппинге. На самом деле он не самый интуитивный, я постоянно смотрел по предыдущим проектам как это правильно делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:30 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник Crunkor У таблицы book есть поле author_id которое является внешним ключом к полю id таблицы author. У меня проблема с маппингом? Ты так и не ответил на вопрос - после создания объекта через JAXB - ссылки в памяти расставлены правильно? Останови в дебаггере и посмотри. Если расставлены - то да, проблема в маппинге. На самом деле он не самый интуитивный, я постоянно смотрел по предыдущим проектам как это правильно делается. В объекте созданным с помощью JAXB есть все ссылки. Мне непонятен один процесс... JAXB создает объект author с полем типа String и полем типа Book. В поле типа Book записана ссылка на тот самый объект book который должен там быть по XML структуре. Помимо этого у объектов author и book есть поля id, а у объекта book есть дополнительное поле типа Author, в котором должна храниться ссылка на родительский объект. После того как JAXB создает объект, все эти три поля равны null, что логично, т.к. он о них не знает. После того, как выполняется команда session.persist(author) поля id у author и book заполняются данными, полученными через обращение к БД (к таблицам sequence). В какой момент поле типа Author объекта book должно присваивать значение? При правильном маппинге автоматически при вызове команды session.persist(author)? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 16:39 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor В какой момент поле типа Author объекта book должно присваивать значение? При правильном маппинге автоматически при вызове команды session.persist(author)? Покажи уже маппинг. Вообще иметь и айди и ссылку - избыточно, обычно либо то либо другое. При persist поле author конечно же выставляться не должно. Но вот при следующем read оно там уже будет. Короче у тебя стопудово корявый маппинг ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 16:52 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor После того, как выполняется команда session.persist(author) Есть jpa. Есть хибер API. Во втором не надо делать. А в первом? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 16:54 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Хибер в один ко многим не запрашивает бд при связи ссылкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 16:56 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник Crunkor В какой момент поле типа Author объекта book должно присваивать значение? При правильном маппинге автоматически при вызове команды session.persist(author)? Покажи уже маппинг. Вообще иметь и айди и ссылку - избыточно, обычно либо то либо другое. При persist поле author конечно же выставляться не должно. Но вот при следующем read оно там уже будет. Короче у тебя стопудово корявый маппинг Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 16:58 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor, Молодец. Теперь минималный код вставки автора и книги. Вывод сюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 16:59 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor, Молодец. Теперь минималный код вставки автора и книги. Вывод сюда. Создание объектов Код: java 1. 2. 3.
Запись в БД Код: java 1. 2. 3. 4. 5.
Ошибка - javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one property В дебаге Book.author - null ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 17:11 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor, Вставка без jaxb. Из хелпа по хиберу ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 17:15 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Вообще one-to-one достаточно мутный аспект хибернейта. Более того, я не понимаю зачем он вообще нужен и почему не держать все в одной сущности? Тебе точно нужна bidirectional связь? В общем я бы отрефакторил это все сначала именно с точки зрениЯ предметной области а уже потом переходил к сохранению. Если такого желания нет - ну смотри сам, надо разбираться и пробовать. Я уже лет 6 слава богу с хибернейтами не воевал, с ходу не скажу, вроде выглядит правильно маппинг. Напиши тест, где изолируй один бук, одного автора и пробуй до посинения пока сохранение не пройдет ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 17:33 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor, Вставка без jaxb. Из хелпа по хиберу Код: java 1. 2. 3. 4. 5.
Так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 17:39 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник Вообще one-to-one достаточно мутный аспект хибернейта Наконец то упрямого автора заставили показать что у него в реале. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 17:44 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Так ? Ты не видел что я 5 раз про один ко многим писал? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 17:45 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor Так ? Ты не видел что я 5 раз про один ко многим писал? Код: java 1. 2. 3. 4. 5. 6. 7. 8.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 19:03 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor, Угу. Теперь маппинг из книжки возьми. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 19:18 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor, Угу. Теперь маппинг из книжки возьми. В их маппинге вся суть в методе Код: java 1. 2. 3. 4.
JAXB, судя по получаемому результату, выполняет команду phones.add( phone );, но не выполняет phone.setPerson( this ); (По всей видимости он и не должен) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 19:28 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor В их маппинге вся суть в методе Crunkor По всей видимости он и не должен) Ну ты наверно, ткнул пальцем в небо и решил писать. У связей еще есть направление. Каскад, вычисляемые,... Каким боком jaxb будет понимать аннотации хибера. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 19:43 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor В их маппинге вся суть в методе Crunkor По всей видимости он и не должен) Ну ты наверно, ткнул пальцем в небо и решил писать. У связей еще есть направление. Каскад, вычисляемые,... Каким боком jaxb будет понимать аннотации хибера. Как быть в такой ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 20:39 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor, василий если ты хочешь чтобы хибер нормально работал ты должен сделать так https://github.com/apb12/FlowerShop.v.2.0/blob/master/src/main/java/com/accenture/microservice/entity/Bucket.java OneToOne определяется в одной сущности и там нет никаких фетчей пиши это в авторе а в книге ты должен это убрать а вообще это ошибка архитектуры у одного автора может быть много книг и отношение тут не one2one а one2many ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 21:05 |
|
|
start [/forum/topic.php?fid=59&startmsg=39900032&tid=2120981]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
148ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 252ms |
0 / 0 |