Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Так правильно делать Hibernate One-To-Many / 6 сообщений из 6, страница 1 из 1
30.10.2012, 00:30:45
    #38017872
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Так правильно делать Hibernate One-To-Many
Есть два класса Customer и Order, схематично:

Customer {

@OneToMany(mappedBy = "parent", targetEntity = Order.class, cascade = {javax.persistence.CascadeType.ALL}, orphanRemoval ? )
Set<Order> orders = new HashSet<>();

}

Order {

@ManyToOne()
Customer parent;

}


Оба внешних ключа отмечены not null;
Обобьет order не может существовать без Customer'a

В логике кода у меня вот такое:

1 - очистить старые значения Set orders
orders.clear()

2 - добавить в Set orders новые значения

Допустим возникает ситуация(очень часто), что все старые значения и все новые значения равны. Т.е. равны по equals и hashCode.

Существует ли механизм, при котором Hibernate не удаляет все и делает новые записи, а как бы сравнивает то что было в Set'е и то что стало.

Например, старые значения (логическое поле): 1,2,3
Новые значения: 1,2,3,4

Т.е. нужно добавить только новое значения 4 и все. В моем же случае Hibernate сначала все удаляет и потом заносит все новые значения.
...
Рейтинг: 0 / 0
30.10.2012, 10:11:27
    #38018128
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Так правильно делать Hibernate One-To-Many
rdmочистить старые значения Set orders
что за термин "значения"?
Не перепутали с Код \ ID ?
Приведите минимальные классы для примера.
...
Рейтинг: 0 / 0
30.10.2012, 13:32:31
    #38018553
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Так правильно делать Hibernate One-To-Many
Petro123, "значения" = обьекты класса Order в сете Set<Order> orders равны по equals и hashCode.
значения 1,2,3,4 - это обьекты класса Order, т.е. к примеру order1,order2,order3,order4. Я для краткости обозначил просто цифрами.
...
Рейтинг: 0 / 0
30.10.2012, 13:34:12
    #38018556
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Так правильно делать Hibernate One-To-Many
rdm, конечно не обязательно равные, могут быть и не равными) поспешил ответить) Вообщем значения просто объекты класса Order )
...
Рейтинг: 0 / 0
30.10.2012, 14:07:16
    #38018649
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Так правильно делать Hibernate One-To-Many
rdm2 - добавить в Set orders новые значения

Допустим возникает ситуация(очень часто), что все старые значения и все новые значения равны. Т.е. равны по equals и hashCode.
хибер отслеживает уникальность в сессии на основе УНИКАЛЬНО кода или Id.
Уникальность кода обеспечиваешь либо ты руками либо он автоматом.

Поэтому "новые значения" означают НОВЫЙ код = УНИКАЛЬНЫЙ.
Поэтому:
"Допустим возникает ситуация" - не может быть.

либо приведи код КОРОТКИЙ.
...
Рейтинг: 0 / 0
30.10.2012, 15:45:49
    #38018901
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Так правильно делать Hibernate One-To-Many
Petro123rdm2 - добавить в Set orders новые значения

Допустим возникает ситуация(очень часто), что все старые значения и все новые значения равны. Т.е. равны по equals и hashCode.
хибер отслеживает уникальность в сессии на основе УНИКАЛЬНО кода или Id.
Уникальность кода обеспечиваешь либо ты руками либо он автоматом.

Поэтому "новые значения" означают НОВЫЙ код = УНИКАЛЬНЫЙ.
Поэтому:
"Допустим возникает ситуация" - не может быть.

либо приведи код КОРОТКИЙ.
Я думал, что он сравнивает не по ID объекты, а через hashCode/equals (у меня там ID не учитывается). Тогда вопросов нет.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Так правильно делать Hibernate One-To-Many / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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