|
|
|
Hibernate equals & hashcode
|
|||
|---|---|---|---|
|
#18+
Вопрос такой.... Вот есть скажем простая сущность... Код: java 1. 2. 3. 4. 5. 6. 7. 8. я определил equals & hashCode так, что в нем участвуют все три поля. Возможно в этом и есть моя беда. Проблема следующая, иногда мне нужно добавлять в базу экземпляр, а иногда нет(например когда поля name, description совпадают с каким-то экземпляром, который был получен, после выборки всех записей), - для этого мне приходится явно писать код, который проверяет, есть ли уже "такой же" объект в базе или нет. Как-то можно это делегировать на Hibernate? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2012, 11:40:46 |
|
||
|
Hibernate equals & hashcode
|
|||
|---|---|---|---|
|
#18+
scymaksя определил equals & hashCode так, что в нем участвуют все три поля. Возможно в этом и есть моя беда. Изменяемые поля не должын влизять на hashCode, а соответственно на equals. Если name и description, никогда у экземпляра не меняются, то нормально. Если меняются. То стоит убрать. scymaksПроблема следующая, иногда мне нужно добавлять в базу экземпляр, а иногда нет(например когда поля name, description совпадают с каким-то экземпляром, который был получен, после выборки всех записей), - для этого мне приходится явно писать код, который проверяет, есть ли уже "такой же" объект в базе или нет. Как-то можно это делегировать на Hibernate? Не уверен, что хибернейт решит проблему. Но у него есть такой параметр в маппинге как natural id. Если у вас имя и описание уникальные, то это натуральный ключ. Попробуйте его прописать в маппинге. Возможно это решит проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2012, 11:45:41 |
|
||
|
Hibernate equals & hashcode
|
|||
|---|---|---|---|
|
#18+
Интересно при чем здесь equals и hashCode? Хибернейт использует значение id, для того чтобы определить нужно ли добавить запись, или сделать апдейт существующей. Вот немного по теме: https://hibernate.onjira.com/browse/HHH-2896 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2012, 11:49:05 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37843941&tid=2131536]: |
0ms |
get settings: |
17ms |
get forum list: |
17ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
43ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 375ms |
| total: | 569ms |

| 0 / 0 |
