|
|
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
Добрый день. Подскажите, как отследить какие поля объекта изменялись с момента последней синхронизации с БД? Это 100% можно сделать. Ведь когда я ставлю в мэппинге dynamic-update="true" hibernate перед update'ом это проверяет... Умный, гад :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:16:12 |
|
||
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
ставишь бряку в методе где есть работа с хиберсессией. и инспектишь её дебугером. внутри там есть PersistentContext внутри него много EntityEntry, в них лежат значения пропертей для dirtycheck а вроде так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:29:45 |
|
||
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
насколько я знаю он создает слепки объектов, и потом по этим слепкам проверяет изменилось сотояние объекта или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:59:06 |
|
||
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
Да, вы правы. В DEBUG'е из PersistenceContext'а я могу получить слепок объекта на момент извлечения его из базы. Но мне это ничего не дает. В коде -то я этот слепок получить не могу. Да и если б мог - это надо самому сравнивать значения полей. Я так понял, что стандартного решения нет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 10:35:35 |
|
||
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
мда.. педагох с меня никакой дебагер был нужен чтоб понять внутренности сессии. ничего не мешает обращаться к entityentry в коде. не так ли? проблем в обходе пропертей и сравнении тоже не вижу (думаю тебе понятно что делать это можно циклом ???) можешь ещё чуток поиграться с дебугером и find referenceами и найти метод которым пользуется хибер в DefaultFlushListener для dirtycheck а я шо то сложное сказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 10:51:57 |
|
||
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
exppдумаю тебе понятно что делать это можно циклом ??? Да, конечно. Reflection... exppя шо то сложное сказать? Нет, наверное. Это я глупый. Как получить entityentry из сессии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 11:37:11 |
|
||
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
Stoma Как получить entityentry из сессии? наверное как и дебугером. чо то тип таво: session.getPersistentContext().getEntries() не ясно что не ясно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 11:49:59 |
|
||
|
HIBERNATE модифицированные поля
|
|||
|---|---|---|---|
|
#18+
exppнаверное как и дебугером. чо то тип таво: session.getPersistentContext().getEntries() В том то и дело, что нет такого метода у сессии getPersistentContext(). И даже ничего подобного. persistentContext - это private свойство. Debuger'ом просмотреть можно. А получить в коде нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 11:59:21 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34862729&tid=2144374]: |
0ms |
get settings: |
15ms |
get forum list: |
25ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
63ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
75ms |
get tp. blocked users: |
3ms |
| others: | 351ms |
| total: | 565ms |

| 0 / 0 |
