|
|
|
Так правильно делать Hibernate One-To-Many
|
|||
|---|---|---|---|
|
#18+
Есть два класса 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 сначала все удаляет и потом заносит все новые значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 00:30:45 |
|
||
|
Так правильно делать Hibernate One-To-Many
|
|||
|---|---|---|---|
|
#18+
rdmочистить старые значения Set orders что за термин "значения"? Не перепутали с Код \ ID ? Приведите минимальные классы для примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 10:11:27 |
|
||
|
Так правильно делать Hibernate One-To-Many
|
|||
|---|---|---|---|
|
#18+
Petro123, "значения" = обьекты класса Order в сете Set<Order> orders равны по equals и hashCode. значения 1,2,3,4 - это обьекты класса Order, т.е. к примеру order1,order2,order3,order4. Я для краткости обозначил просто цифрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 13:32:31 |
|
||
|
Так правильно делать Hibernate One-To-Many
|
|||
|---|---|---|---|
|
#18+
rdm, конечно не обязательно равные, могут быть и не равными) поспешил ответить) Вообщем значения просто объекты класса Order ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 13:34:12 |
|
||
|
Так правильно делать Hibernate One-To-Many
|
|||
|---|---|---|---|
|
#18+
rdm2 - добавить в Set orders новые значения Допустим возникает ситуация(очень часто), что все старые значения и все новые значения равны. Т.е. равны по equals и hashCode. хибер отслеживает уникальность в сессии на основе УНИКАЛЬНО кода или Id. Уникальность кода обеспечиваешь либо ты руками либо он автоматом. Поэтому "новые значения" означают НОВЫЙ код = УНИКАЛЬНЫЙ. Поэтому: "Допустим возникает ситуация" - не может быть. либо приведи код КОРОТКИЙ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 14:07:16 |
|
||
|
Так правильно делать Hibernate One-To-Many
|
|||
|---|---|---|---|
|
#18+
Petro123rdm2 - добавить в Set orders новые значения Допустим возникает ситуация(очень часто), что все старые значения и все новые значения равны. Т.е. равны по equals и hashCode. хибер отслеживает уникальность в сессии на основе УНИКАЛЬНО кода или Id. Уникальность кода обеспечиваешь либо ты руками либо он автоматом. Поэтому "новые значения" означают НОВЫЙ код = УНИКАЛЬНЫЙ. Поэтому: "Допустим возникает ситуация" - не может быть. либо приведи код КОРОТКИЙ. Я думал, что он сравнивает не по ID объекты, а через hashCode/equals (у меня там ID не учитывается). Тогда вопросов нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 15:45:49 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2130670]: |
0ms |
get settings: |
17ms |
get forum list: |
29ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
59ms |
get topic data: |
19ms |
get first new msg: |
12ms |
get forum data: |
5ms |
get page messages: |
77ms |
get tp. blocked users: |
3ms |
| others: | 293ms |
| total: | 528ms |

| 0 / 0 |
