powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Два поля в сущности одинакового типа
15 сообщений из 15, страница 1 из 1
Два поля в сущности одинакового типа
    #38429477
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть oldAddress
Есть newAddress

Есть entity
Код: java
1.
2.
3.
4.
5.
6.
7.
@Entity
class Person{
   @OneToOne
   private Address oldAddress;
   @OneToOne
   private Address newAddress;
}



естесно получают ошибку что
Exception in thread "main" javax.persistence.EntityExistsException: a different object with the same identifier value was already associated with the session: [entity.Address#0]
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429551
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А @JoinColumn добавить и указать какой FK в какой ассоциации используется?
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429576
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА @JoinColumn добавить и указать какой FK в какой ассоциации используется?

и как это сделать?

на стаковерфлоу утверждаеют что это невозможно сделать маппингом.
Решение делать через наследование или вводить дополнительный поле в адрес через enum которое будет указывать являтеся ли адрес старым или новым и при извлечении проверять старый или новый адрес извлекся
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429588
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так стоп. Ошбка ведь рантайма а не маппинга. Да?
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429654
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.

Вроде как hibernate не может определить что где какая сущность это вроде как противоречит самому понятию OneToOne
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429683
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingДа.

Вроде как hibernate не может определить что где какая сущность это вроде как противоречит самому понятию OneToOne
А по тексту не скажешь. Ругается на два разных объекта с одинаковым id = 0. Что это за id вообще такой. Почему там не null, если это новый адрес?
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429685
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что именно заставило вас полагать что ошибка и маппинг как-то связаны? Либо ещё какая-то инфа, которая здесь не указана. Либо они не связаны.
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429689
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насколько я понял
если я создаю oldAddress и newAddress то оба по умалчанию получают id 0.

во вторых исключение типа javax.persistence.EntityExistsException
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429697
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429704
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingнасколько я понял
если я создаю oldAddress и newAddress то оба по умалчанию получают id 0.

По-умолчанию для новых сущностей id принятно делать null.
А для id=0 нужно в маппинге указать, что id=0 это новая сущность, а не уже сохраненная.

llemingнасколько я понял во вторых исключение типа javax.persistence.EntityExistsException
Ну, мне не очевидно как это исключения связано с маппингом приведенным выше. Его можно и без этого воспроизвести.
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429719
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно. По-умолчанию не будет работать, потому что используется одно и то же значение ID.
Почеме через JoinColumn не работает? Там хибер тоже пытается одно и тоже ID назнчить?
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429739
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну у меня id это long а не Long, хотя как поведет себя с autoboxing не знаю. Попробую с Long.

каких либо требовани по id я не нашел и по привычке пользуюсь long типом который по дефолту равен 0.
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429750
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот те раз.

хе хе в этом случае работает
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429752
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingвот те раз.

хе хе в этом случае работает
Как это? Не может быть. На stackoverflow, ведь пишут что не может работать.
...
Рейтинг: 0 / 0
Два поля в сущности одинакового типа
    #38429807
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczllemingвот те раз.

хе хе в этом случае работает
Как это? Не может быть. На stackoverflow, ведь пишут что не может работать.

вот и верь стаку после такого :).

интересно что создается в базе дополнительное поле в таблице адресс с именем класса DTYPE содержащее имя класса Address

можно просто запилить класс обертку, который что то вроде OldAddress extend Address и NewAddress extend Address. чтобы их имена попали в DTYPE

ну так на всякий, чтобы чистые sql запросы было легче делать.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Два поля в сущности одинакового типа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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