|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Добрый день Есть таблицы: Таблица Author Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Таблица Book Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Все сущностью создаются с помощью JAXB из XMl-файла. Всё хорошо, вот только у объекта book поле author - null. Код записи в БД: Код: java 1. 2. 3. 4. 5.
В таком случае в таблицы book и author записываются строки, только book.author_id = null. При выполнении кода Код: java 1. 2. 3. 4. 5. 6.
Все данные записываются так, как мне надо. Проблема в том, что таких таблиц и связей очень много и прописывать команды типа author.getBook().setAuthor(author) не правильно на мой взгляд. Да и сама команда как-то странно выглядит. Как заставить hibernate автоматически подставлять в дочерние элементы ссылку на родителя? p.s. Вместо @MapsId писал @JoinColumn, но на результат это не повлияло. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 10:24 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Проблема в том, что таких таблиц и связей очень много и прописывать команды типа author.getBook().setAuthor(author) не правильно на мой взгляд. Да и сама команда как-то странно выглядит. Дай ссыль или букварь или спеку как надо и мы посмотрим. Правильно или нет. Не по памяти же код писал? Crunkor Все сущностью создаются с помощью JAXB из XMl-файла. Сломалось после JAXB? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 10:32 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Код: java 1.
Короче, hello world где? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 10:34 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor ] Это я и хотел спросить =). Для чего нужны все эти связи, если нужно вручную прописывать каждую из них? В моем коде условный объект Author имеет огромное множество таких связей, неужели их надо прописывать вручную? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:04 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp как ты иначе связь двух сущностей вставишь? Это я и хотел спросить =). Для чего нужны все эти связи, если нужно вручную прописывать каждую из них? В моем коде условный объект Author имеет огромное множество таких связей, неужели их надо прописывать вручную? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:05 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Это я и хотел спросить =). Crunkor Для чего нужны все эти связи, если нужно вручную прописывать каждую из них? Пример из справки один ко многим где? Там руками ставится? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:16 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor В моем коде условный объект Author имеет огромное множество таких связей, Ты не показал. И по какой нормальной форме нормализовал модель тоже не видим. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:17 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Если у вас приходит XML извне, то выкиньте хибер и сохраняйте эти xml прямо в блоб. Либо отработайте хибер, но не приплетайте jaxb. Они на разных планетах друг от друга. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:26 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Код: java 1.
Попробуй так. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:40 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Если у вас приходит XML извне, то выкиньте хибер и сохраняйте эти xml прямо в блоб. Либо отработайте хибер, но не приплетайте jaxb. Они на разных планетах друг от друга. В XML приходит база данных. Что-то типа: Код: xml 1. 2. 3. 4. 5. 6.
На самом деле XML достаточно большой и разветвленный. При помощи JABX я создаю из этого XML файла объект Код: java 1. 2. 3.
JABX на мой взгляд выполняет все успешно. Создается объект author в котором присутствуют все поля и вложенные объекты. Классы с JAXB+HIBERNATE Код: 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.
После этого я хочу author записать в базу данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:42 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
crutchmaster Код: java 1.
Попробуй так. Не помогло. Поле book у объекта author всё так же null. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 11:56 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor На самом деле XML достаточно большой и разветвленный. А с циклическими связями как? Crunkor При помощи JABX я создаю из этого XML файла объект ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 12:21 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor После этого я хочу author записать в базу данных. Странная задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 12:23 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor На самом деле XML достаточно большой и разветвленный. А с циклическими связями как? Crunkor При помощи JABX я создаю из этого XML файла объект JAXB прекрасно создает объект, с ним проблем нет. PetroNotC Sharp Crunkor После этого я хочу author записать в базу данных. Странная задача. Перегоняется не вся база а только часть. Xml файлов много, каждый содержит свои данные, а структура одна. Команда Код: java 1.
присваивает объектам ID, но оставляет пустым поле author у book. Мне кажется, что тут не хватает либо какой-то настройки, либо неправильно указаны связи между таблицами. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 12:38 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor JAXB прекрасно создает объект, с ним проблем нет. Он заточен передавать коллекции без связей. VO или DTO. Получил коллекцию, принял коллекцию. Коллекцию в базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 12:46 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Мне кажется, что тут не хватает либо какой-то настройки, либо неправильно указаны связи между таблицами. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 12:48 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Не помогло. Поле book у объекта author всё так же null. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 12:49 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor JAXB прекрасно создает объект, с ним проблем нет. Он заточен передавать коллекции без связей. VO или DTO. Получил коллекцию, принял коллекцию. Коллекцию в базу. Не совсем понял, что вы хотели сказать. PetroNotC Sharp Crunkor Мне кажется, что тут не хватает либо какой-то настройки, либо неправильно указаны связи между таблицами. xD Это намек на то, что бы я пошел читать какую-нибудь книгу по Hibernate с 600+ страницами ? Видимо пока другого выхода нет. PetroNotC Sharp Crunkor Не помогло. Поле book у объекта author всё так же null. Слишком тонко для меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 13:42 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Не совсем понял, что вы хотели сказать. Понятно? Crunkor книгу по Hibernate с 600+ страницами ? Hello world один ко многим. .... сущностьА.добавитьСвязь(б) Везде это надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 13:49 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor, Вон, у apb12 спроси. Может в спринге какое таинство есть и связи сами сохраняются. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 13:52 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Crunkor Не совсем понял, что вы хотели сказать. Понятно? Crunkor книгу по Hibernate с 600+ страницами ? Hello world один ко многим. .... сущностьА.добавитьСвязь(б) Везде это надо. Всё равно не понятно о какой другой задаче идет речь кроме как записать объект author в БД с использованием Hibernate. сущностьА.добавитьСвязь(б) Разве не для этого прописываются аннотации? В моем случае @OneToOne ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 14:07 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Разве не для этого прописываются аннотации? В моем случае @OneToOne Мне интересно, ты представлял себя на месте хибера? Как ты поймешь что объект автор и объект бук надо связать? После создания JAXB объектом - ссылки правильно расставлены? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 14:37 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Разве не для этого прописываются аннотации? В моем случае @OneToOne Да. Но без JAXB ЖЕ? Пример то поищи в инете. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 14:40 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник Crunkor Разве не для этого прописываются аннотации? В моем случае @OneToOne Мне интересно, ты представлял себя на месте хибера? Как ты поймешь что объект автор и объект бук надо связать? После создания JAXB объектом - ссылки правильно расставлены? Вручную я ссылки нигде не расставлял. Мне казалось, что этим должен был заняться hibernate после указаний аннотаций. Конструкции типа author.getBook().setAuthor(author) на мой взгляд неправильные. Для чего в книге, которая сидит в авторе указывать ее автора? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 14:44 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Конструкции типа author.getBook().setAuthor(author) на мой взгляд неправильные. Для чего в книге, которая сидит в авторе указывать ее автора? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 14:55 |
|
Как заставить 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 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, я ему уже написал - сущности кривые если 1 к 1 то нужно делать как у меня в примере я тоже в свое время такую же ошибку словил ему просто нужно понять что если он публикует отношения они должны быть в одной из таблиц а не в двух но для этого нужно хотя бы месячные курсы по бдшкам пройти ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 21:15 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Проблема в том, что таких таблиц и связей очень много и прописывать команды типа author.getBook().setAuthor(author) не правильно на мой взгляд. Да и сама команда как-то странно выглядит. Crunkor Как быть в такой ситуации? Мы выяснили что с хибером все нормально. Нужно озвучить задачу. Описать модель. Убрать один к одному. Так как ты написал что связей 50 штук. Это значит вместо сущности одной с 50 полями, ты сделал 50 сущностей с FK. А так не делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 22:29 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 Crunkor, а вообще это ошибка архитектуры у одного автора может быть много книг и отношение тут не one2one а one2many Это был просто пример. apb12 PetroNotC Sharp, ему просто нужно понять что если он публикует отношения они должны быть в одной из таблиц а не в двух "В какой документации такое написано?" (с) PetroNotC Sharp PetroNotC Sharp Убрать один к одному. Почему один к одному так плох? Если у объекта может быть только один наследник, то всё равно лучше делать OneToMany ? PetroNotC Sharp Так как ты написал что связей 50 штук. Это значит вместо сущности одной с 50 полями, ты сделал 50 сущностей с FK. А так не делают. На самом деле сущность одна. Один объект, который имеет связи как OneToOne, так и OneToMany, а эти связи имеют еще свои связи и т.д. Я просто упростил для большей ясности. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 23:04 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor "В какой документации такое написано?" (с) PetroNotC Sharp и. я не силен в sql ,но что то мне подсказывает что в отношении двух таблиц не может быть двух foreign key которые указывают друг на друга вы товарисчь вместо споров просто опробуйте предложенное в авторе оставьте что есть ,в книге уберите и у вас все заработает я вам выше привет ссылку на гит хаб с рабочим проектом -и там все прекрасно работает ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 23:13 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor На самом деле сущность одна. Один объект, который имеет связи как OneToOne, так и OneToMany, а эти связи имеют еще свои связи и т.д. Я просто упростил для большей ясности. смотри сюда алексей есди связь 1т1 то ты должен указать это только в одной сущности если 1тМ то в двух иначе хибер тебя просто не поймет я тебе дал ссылку на рабочий проект открой там фолдер Entity и все станет понятно,так как там есть все виды отношений ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 23:18 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 я не силен в sql ,но что то мне подсказывает что в отношении двух таблиц не может быть двух foreign key которые указывают друг на друга FK у меня только один. В таблице book поле author_id. apb12 вы товарисчь вместо споров просто опробуйте предложенное в авторе оставьте что есть ,в книге уберите и у вас все заработает я вам выше привет ссылку на гит хаб с рабочим проектом -и там все прекрасно работает Оставил в авторе и убрал в книге. Выходит ошибка "ОШИБКА: столбец "book_id" в таблице "author" не существует" ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 23:23 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Ох жесть. Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Вот какое поведение ожидается, когда мы говорим что ID нужно и генерить и шарить с автором одновременно? Там еще в хибере есть такое: hibernate.enhancer.enableAssociationManagementhibernate.enhancer.enableAssociationManagement (e.g. true or false (default value)) Enable association management feature in runtime bytecode enhancement which automatically synchronizes a bidirectional association when only one side is changed. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 00:14 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Выходит ошибка "ОШИБКА: столбец "book_id" в таблице "author" не существует" ты посмотрел код на гитхабе что я тебе дал? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 00:33 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 Crunkor Выходит ошибка "ОШИБКА: столбец "book_id" в таблице "author" не существует" ты посмотрел код на гитхабе что я тебе дал? Да, посмотрел. У тебя там "магия" спринга что-то делает. (В BucketRepo.java - JpaRepository) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 00:39 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor apb12 пропущено... ты посмотрел код на гитхабе что я тебе дал? Да, посмотрел. У тебя там "магия" спринга что-то делает. (В BucketRepo.java - JpaRepository) JPaRepository никакого к этому отношения не имеет,это хибернейтовский интерфейс который генерирует тебе запросы в базу вместо дрочбы с написаниаем SQL запросов и их обработкой смотри на сущность в папке Entity там есть Bucket и Flower.. у которых как раз отношение 1 к 1 и все прекрасно работает ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 00:58 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 Crunkor пропущено... Да, посмотрел. У тебя там "магия" спринга что-то делает. (В BucketRepo.java - JpaRepository) JPaRepository никакого к этому отношения не имеет,это хибернейтовский интерфейс который генерирует тебе запросы в базу вместо дрочбы с написаниаем SQL запросов и их обработкой смотри на сущность в папке Entity там есть Bucket и Flower.. у которых как раз отношение 1 к 1 и все прекрасно работает У нас с тобой немного разные случаи. В твоем случае ты сам создаешь объект типа Bucket и сам устанавливаешь ему setFlower(). В моем случае объект создается с помощью JAXB, а в нем я пока не могу заставить сохранять ссылку на родительский элемент. Пойду рыться в GitHub'e ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 01:08 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor У нас с тобой немного разные случаи. В твоем случае ты сам создаешь объект типа Bucket и сам устанавливаешь ему setFlower(). В моем случае объект создается с помощью JAXB, а в нем я пока не могу заставить сохранять ссылку на родительский элемент. Пойду рыться в GitHub'e Вообще-то желательно чтобы было "мухи отдельно, котлеты отдельно". Т.е. классы для генерации из/в XML это одно, а для работы с БД другое. И для них написать прослойку для преобразования одного в другое. И да. Для XML рекомендуется написать xsd, по ней (xsd) автогенерить классы и уже с ними работать. Вот тогда будет настоящий "Кровавый Ынтырпрайз"! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 05:49 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Почему один к одному так плох 2. Первичный ключ PK. сложнее делать и там и там одновременно. 3. По опыту всех прогеров это геморой. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:25 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Crunkor Один объект, который имеет связи как OneToOne, так и OneToMany, а эти связи имеют еще свои связи и т.д. Я просто упростил для большей ясности. Офигеть. Твоя задача не имеет решения. Автомат невозможен. Перевожу задачу: - авторесть бд из 10 таблиц и 85 связями. С FK и каскадными. С двунаправленными. То есть полноценная БД, но в XML и не в "ОРМ формате." Нужно в автомате, не программируя, загнать ее в бд с другим хибер маппингом. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:40 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 и отношение тут не one2one а one2many Авторы с книгами соотнясятся как many2many ващет ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:15 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник apb12 и отношение тут не one2one а one2many Авторы с книгами соотнясятся как many2many ващет у одной книги несколько авторов? ну впринципе да,но обычно это игнорируется -пишется просто первый автор и все пример с литреса ,на обложке два автора,под книгой автор-название явно стянуты с базы и что там? верно 1 автор ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:21 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:26 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Он блин ссылается что везде всю задачу упростил. Связи упростил. Табла одна и т.д. То есть дерево упростили и осталась одна палка - швабра из одной ветки. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:27 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 у одной книги несколько авторов? ну впринципе да,но обычно это игнорируется -пишется просто первый автор и все ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 13:12 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov apb12 у одной книги несколько авторов? ну впринципе да,но обычно это игнорируется -пишется просто первый автор и все тоже верно ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 13:44 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник, ну вот создал сейчас Many2Many и тут же словил грабли у меня две таблицы юзер и книга и хибер создает 3ю юзер_книга вот я хочу из этой таблы юзер_книга удалить какую то запись и не пойму как это с помощью хибера делать? писть через JPQL запрос ?из коробки хибер не сможет сам удалить? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:01 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 из коробки хибер не сможет сам удалить? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:06 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 ну вот создал сейчас Many2Many и тут же словил грабли А при чем техическая реализация какого-то фреймворка к правильности модели? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:09 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, я понял эсоздать новую сущность user_book а вот это все выпилить? вообще чтоли убрать анотацию Many2Many? или же там есть какая то хитрость Код: java 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:16 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
забыл ник apb12 ну вот создал сейчас Many2Many и тут же словил грабли А при чем техическая реализация какого-то фреймворка к правильности модели? ну тоесть проще взять и написат новую сущность ,чем городить огород с этой анотацией @Many2Many? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:18 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
apb12 ну тоесть проще взять и написат новую сущность ,чем городить огород с этой анотацией @Many2Many? Проще сущность. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:25 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, А нельзя ли ваше с "настей" общение перенести в приват? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 21:10 |
|
Как заставить Hibernate автоматически связывать объекты?
|
|||
---|---|---|---|
#18+
Народ, всем спасибо за помощь. Из последнего примера мне стало окончательно ясно, что нужно что-то менять на этапе формирования самого объекта. Т.к. за формирование объекта у меня отвечает JAXB, то было решено копать в его сторону. Всё, что мне нужно было - это указывать родителя в момент создания объекта. В один из вечеров, во время поиска, я наткнулся на одну статью про JAXB, где увидел очень интересный метод afterUnmarshal с параметрами (Unmarshaller unmarshaller, Object parent ). В режиме дебага посмотрел, кто же приходит в него 2-м параметром и, как оказалось, это был действительно тот объект, который мне был нужен. Добавил в сущностях методы типа Код: java 1. 2. 3.
и всё заработало. Возможно эта информация поможет кому-нибудь еще. Еще раз всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2019, 20:17 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120981]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 327ms |
0 / 0 |