powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Как заставить Hibernate автоматически связывать объекты?
25 сообщений из 78, страница 3 из 4
Как заставить Hibernate автоматически связывать объекты?
    #39900451
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

я ему уже написал - сущности кривые
если 1 к 1 то нужно делать как у меня в примере
я тоже в свое время такую же ошибку словил
ему просто нужно понять что если он публикует отношения они должны быть в одной из таблиц а не в двух
но для этого нужно хотя бы месячные курсы по бдшкам пройти
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900477
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor
Проблема в том, что таких таблиц и связей очень много и прописывать команды типа author.getBook().setAuthor(author) не правильно на мой взгляд. Да и сама команда как-то странно выглядит.

Crunkor
Как быть в такой ситуации?

Мы выяснили что с хибером все нормально.
Нужно озвучить задачу. Описать модель. Убрать один к одному.
Так как ты написал что связей 50 штук. Это значит вместо сущности одной с 50 полями, ты сделал 50 сущностей с FK.
А так не делают.
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900484
Crunkor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apb12
Crunkor,
а вообще это ошибка архитектуры
у одного автора может быть много книг
и отношение тут не one2one а one2many


Это был просто пример.

apb12
PetroNotC Sharp,
ему просто нужно понять что если он публикует отношения они должны быть в одной из таблиц а не в двух


"В какой документации такое написано?" (с) PetroNotC Sharp


PetroNotC Sharp

Убрать один к одному.

Почему один к одному так плох? Если у объекта может быть только один наследник, то всё равно лучше делать OneToMany ?

PetroNotC Sharp

Так как ты написал что связей 50 штук. Это значит вместо сущности одной с 50 полями, ты сделал 50 сущностей с FK.
А так не делают.


На самом деле сущность одна. Один объект, который имеет связи как OneToOne, так и OneToMany, а эти связи имеют еще свои связи и т.д. Я просто упростил для большей ясности.
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900487
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor


"В какой документации такое написано?" (с) PetroNotC Sharp


и.

я не силен в sql ,но что то мне подсказывает что в отношении двух таблиц не может быть двух foreign key которые указывают друг на друга
вы товарисчь вместо споров просто опробуйте предложенное
в авторе оставьте что есть ,в книге уберите
и у вас все заработает
я вам выше привет ссылку на гит хаб с рабочим проектом -и там все прекрасно работает
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900489
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor


На самом деле сущность одна. Один объект, который имеет связи как OneToOne, так и OneToMany, а эти связи имеют еще свои связи и т.д. Я просто упростил для большей ясности.

смотри сюда алексей
есди связь 1т1 то ты должен указать это только в одной сущности
если 1тМ
то в двух
иначе хибер тебя просто не поймет
я тебе дал ссылку на рабочий проект открой там фолдер Entity и все станет понятно,так как там есть все виды отношений
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900491
Crunkor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apb12

я не силен в sql ,но что то мне подсказывает что в отношении двух таблиц не может быть двух foreign key которые указывают друг на друга


FK у меня только один. В таблице book поле author_id.

apb12

вы товарисчь вместо споров просто опробуйте предложенное
в авторе оставьте что есть ,в книге уберите
и у вас все заработает
я вам выше привет ссылку на гит хаб с рабочим проектом -и там все прекрасно работает


Оставил в авторе и убрал в книге.

Выходит ошибка "ОШИБКА: столбец "book_id" в таблице "author" не существует"
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900504
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох жесть.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
...

    @OneToOne(fetch = FetchType.LAZY)
    @MapsId
    private Author author;



Вот какое поведение ожидается, когда мы говорим что 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.
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900506
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor


Выходит ошибка "ОШИБКА: столбец "book_id" в таблице "author" не существует"

ты посмотрел код на гитхабе что я тебе дал?
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900508
Crunkor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apb12
Crunkor


Выходит ошибка "ОШИБКА: столбец "book_id" в таблице "author" не существует"

ты посмотрел код на гитхабе что я тебе дал?

Да, посмотрел. У тебя там "магия" спринга что-то делает. (В BucketRepo.java - JpaRepository)
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900517
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor
apb12
пропущено...

ты посмотрел код на гитхабе что я тебе дал?

Да, посмотрел. У тебя там "магия" спринга что-то делает. (В BucketRepo.java - JpaRepository)

JPaRepository никакого к этому отношения не имеет,это хибернейтовский интерфейс который генерирует тебе запросы в базу
вместо дрочбы с написаниаем SQL запросов и их обработкой
смотри на сущность в папке Entity
там есть Bucket и Flower.. у которых как раз отношение 1 к 1
и все прекрасно работает
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900526
Crunkor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apb12
Crunkor
пропущено...

Да, посмотрел. У тебя там "магия" спринга что-то делает. (В BucketRepo.java - JpaRepository)

JPaRepository никакого к этому отношения не имеет,это хибернейтовский интерфейс который генерирует тебе запросы в базу
вместо дрочбы с написаниаем SQL запросов и их обработкой
смотри на сущность в папке Entity
там есть Bucket и Flower.. у которых как раз отношение 1 к 1
и все прекрасно работает


У нас с тобой немного разные случаи. В твоем случае ты сам создаешь объект типа Bucket и сам устанавливаешь ему setFlower(). В моем случае объект создается с помощью JAXB, а в нем я пока не могу заставить сохранять ссылку на родительский элемент.

Пойду рыться в GitHub'e
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900550
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor

У нас с тобой немного разные случаи. В твоем случае ты сам создаешь объект типа Bucket и сам устанавливаешь ему setFlower(). В моем случае объект создается с помощью JAXB, а в нем я пока не могу заставить сохранять ссылку на родительский элемент.

Пойду рыться в GitHub'e


Вообще-то желательно чтобы было "мухи отдельно, котлеты отдельно".
Т.е. классы для генерации из/в XML это одно, а для работы с БД другое.
И для них написать прослойку для преобразования одного в другое.

И да. Для XML рекомендуется написать xsd, по ней (xsd) автогенерить классы и уже с ними работать.

Вот тогда будет настоящий "Кровавый Ынтырпрайз"!
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900560
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor
Почему один к одному так плох
1. потому что бд главная. А не java программист. А в бд одну таблу бить на две не выгодно никому. Ни базе, ни админу.
2. Первичный ключ PK. сложнее делать и там и там одновременно.
3. По опыту всех прогеров это геморой.
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900563
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crunkor
Один объект, который имеет связи как OneToOne, так и OneToMany, а эти связи имеют еще свои связи и т.д. Я просто упростил для большей ясности.

Офигеть. Твоя задача не имеет решения.
Автомат невозможен.
Перевожу задачу:
- авторесть бд из 10 таблиц и 85 связями. С FK и каскадными. С двунаправленными.
То есть полноценная БД, но в XML и не в "ОРМ формате."
Нужно в автомате, не программируя, загнать ее в бд с другим хибер маппингом.

)))
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900730
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12

и отношение тут не one2one а one2many

Авторы с книгами соотнясятся как many2many ващет
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900740
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
apb12

и отношение тут не one2one а one2many

Авторы с книгами соотнясятся как many2many ващет

у одной книги несколько авторов?
ну впринципе да,но обычно это игнорируется -пишется просто первый автор и все
пример с литреса
,на обложке два автора,под книгой автор-название явно стянуты с базы и что там? верно 1 автор
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900747
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12,
Какие то ты говно книги читаешь))
http://prntscr.com/q8pmyl
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900749
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он блин ссылается что везде всю задачу упростил.
Связи упростил. Табла одна и т.д.
То есть дерево упростили и осталась одна палка - швабра из одной ветки.
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900769
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
у одной книги несколько авторов?
ну впринципе да,но обычно это игнорируется -пишется просто первый автор и все
... хотя (уметь) искать надо по всем авторам.
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900801
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
apb12
у одной книги несколько авторов?
ну впринципе да,но обычно это игнорируется -пишется просто первый автор и все
... хотя (уметь) искать надо по всем авторам.

тоже верно
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900915
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
ну вот создал сейчас Many2Many и тут же словил грабли
у меня две таблицы юзер и книга
и хибер создает 3ю юзер_книга
вот я хочу из этой таблы юзер_книга удалить какую то запись и не пойму как это с помощью хибера делать?
писть через JPQL запрос ?из коробки хибер не сможет сам удалить?
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900917
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
из коробки хибер не сможет сам удалить?
может. Но надо три сущности. А не техническая табла из двух полей айдишников.
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900921
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12

ну вот создал сейчас Many2Many и тут же словил грабли

А при чем техическая реализация какого-то фреймворка к правильности модели?
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900926
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
я понял эсоздать новую сущность user_book а вот это все выпилить?
вообще чтоли убрать анотацию Many2Many?
или же там есть какая то хитрость

Код: java
1.
2.
3.
4.
5.
6.
7.
@ManyToMany(cascade = { CascadeType.ALL })
    @JoinTable(
            name = "User_Book",
            joinColumns = { @JoinColumn(name = "user_id") },
            inverseJoinColumns = { @JoinColumn(name = "book_id") }
    )
    private List<Book>bookList;
...
Рейтинг: 0 / 0
Как заставить Hibernate автоматически связывать объекты?
    #39900927
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
apb12

ну вот создал сейчас Many2Many и тут же словил грабли

А при чем техическая реализация какого-то фреймворка к правильности модели?

ну тоесть проще взять и написат новую сущность ,чем городить огород с этой анотацией @Many2Many?
...
Рейтинг: 0 / 0
25 сообщений из 78, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Как заставить Hibernate автоматически связывать объекты?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]