Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / HIBERNATE модифицированные поля / 9 сообщений из 9, страница 1 из 1
10.10.2007, 13:16:12
    #34860003
Stoma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
Добрый день.
Подскажите, как отследить какие поля объекта изменялись с момента последней синхронизации с БД?

Это 100% можно сделать. Ведь когда я ставлю в мэппинге
dynamic-update="true"
hibernate перед update'ом это проверяет... Умный, гад :)
...
Рейтинг: 0 / 0
10.10.2007, 13:29:45
    #34860062
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
ставишь бряку в методе где есть работа с хиберсессией. и инспектишь её дебугером.

внутри там есть PersistentContext внутри него много EntityEntry, в них лежат значения пропертей для dirtycheck а

вроде так
...
Рейтинг: 0 / 0
10.10.2007, 13:59:06
    #34860202
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
насколько я знаю он создает слепки объектов, и потом по этим слепкам проверяет изменилось сотояние объекта или нет.
...
Рейтинг: 0 / 0
11.10.2007, 10:35:35
    #34862240
Stoma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
Да, вы правы. В DEBUG'е из PersistenceContext'а я могу получить слепок объекта на момент извлечения его из базы.
Но мне это ничего не дает. В коде -то я этот слепок получить не могу.
Да и если б мог - это надо самому сравнивать значения полей.
Я так понял, что стандартного решения нет :(
...
Рейтинг: 0 / 0
11.10.2007, 10:51:57
    #34862309
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
мда.. педагох с меня никакой

дебагер был нужен чтоб понять внутренности сессии. ничего не мешает обращаться к entityentry в коде. не так ли? проблем в обходе пропертей и сравнении тоже не вижу (думаю тебе понятно что делать это можно циклом ???) можешь ещё чуток поиграться с дебугером и find referenceами и найти метод которым пользуется хибер в DefaultFlushListener для dirtycheck а

я шо то сложное сказать?
...
Рейтинг: 0 / 0
11.10.2007, 11:37:11
    #34862533
Stoma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
exppдумаю тебе понятно что делать это можно циклом ???
Да, конечно. Reflection...

exppя шо то сложное сказать?
Нет, наверное. Это я глупый.
Как получить entityentry из сессии?
...
Рейтинг: 0 / 0
11.10.2007, 11:49:59
    #34862612
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
Stoma
Как получить entityentry из сессии?

наверное как и дебугером. чо то тип таво: session.getPersistentContext().getEntries()
не ясно что не ясно
...
Рейтинг: 0 / 0
11.10.2007, 11:59:21
    #34862661
Stoma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
exppнаверное как и дебугером. чо то тип таво: session.getPersistentContext().getEntries()
В том то и дело, что нет такого метода у сессии getPersistentContext(). И даже ничего подобного.
persistentContext - это private свойство. Debuger'ом просмотреть можно. А получить в коде нет.
...
Рейтинг: 0 / 0
11.10.2007, 12:13:27
    #34862729
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HIBERNATE модифицированные поля
в крайнем случае через рефлексию. но лучше поищи метод ещё.

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


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