powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по хибернейту
12 сообщений из 37, страница 2 из 2
Вопрос по хибернейту
    #38365785
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и всё таки может мне кто-нибудь объяснить когда hibernate вызывает конструктор объекта?
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38365799
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanraТот же самый принцип, но обнуляем коллекциии в самом методе, если знаем, что они не должны обновляться:
Код: java
1.
2.
3.
4.
5.
6.
	@RequestMapping("/saveCandidate")
	public String saveCandidate(Model model, @ModelAttribute Candidate candidate) {
		candidate.setSkills(null);
		candidateService.update(candidate);//тут простой апдейт делается
		return "candidateMenu";
	}




Это не работает - всё также обнуляется. все зависимые таблицы обнулились в базе
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38365841
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90и всё таки может мне кто-нибудь объяснить когда hibernate вызывает конструктор объекта?
Ну поставь брейкпоинт в конструкторе да посмотри. Короткоий ответ - всегда, когда подгружает из базы. Но если объект есть в кэше - то конструктор вызываться не будет
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38365955
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

авторвсегда, когда подгружает из базы

Так где у меня подгрузка из базы то?
у меня только загрузка в базу. Но конструктор то вызвался.
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38366044
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Так где у меня подгрузка из базы то?
у меня только загрузка в базу. Но конструктор то вызвался.
автор Мне надо заново грузить из базы вакансии, руками их приаттачивать к кандидату
Если только загрузка, то объект новый = создал, приаттачил все списки - сохранил. Всё это в короткой транзакции этой же сессии.
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38366091
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот отсюда все проблемы:
redwhite90Благодаря возможностям спринга я могу получить частично заполненный объект кандидата(без списка вакансий).
Получили объект минуя хибернейт - так и сохраняйте его не в хибернейте. Ну и плюс то, что не показано, но скорее всего, картина такая:
- есть объект Candidate(h) в хибернейте
- есть Candidate(s0), который инжектится спрингом, какая связь между ними, не видно
- опять-таки не видно, сохраняется ли Candidate(s0) в сессии (а если нет, то он конструируется при каждом инжекте, и заполняется значениями из формы. Поэтому, если появятся новые поля - они будут затираться, если их нет на форме; возможна атака в виде подделки скрытого поля ${candidate.id} в post-заросе).
- В общем случае, в /saveCandidate это уже 3 объект, назовем его Candidate(s1), и вот он сохраняется в базу

Я вижу 2 способа решить проблему:
1) инжектить полный объект Candidate(h) (если хочется сэкономить, списки можно сделать ленивыми); сохранять его в сессию.
2) если не сохранять в сессию, то получать полный объект Candidate(h) в методе saveCandidate и заполнять те поля, которые мы хотим поменять из Candidate(s1)
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38366301
Petro123redwhite90Так где у меня подгрузка из базы то?
у меня только загрузка в базу. Но конструктор то вызвался.
автор Мне надо заново грузить из базы вакансии, руками их приаттачивать к кандидату
Если только загрузка, то объект новый = создал, приаттачил все списки - сохранил. Всё это в короткой транзакции этой же сессии.

update. То есть в базе он уже есть
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38366316
ivanraВот отсюда все проблемы:
redwhite90Благодаря возможностям спринга я могу получить частично заполненный объект кандидата(без списка вакансий).
Получили объект минуя хибернейт - так и сохраняйте его не в хибернейте. Ну и плюс то, что не показано, но скорее всего, картина такая:
- есть объект Candidate(h) в хибернейте
- есть Candidate(s0), который инжектится спрингом, какая связь между ними, не видно
- опять-таки не видно, сохраняется ли Candidate(s0) в сессии (а если нет, то он конструируется при каждом инжекте, и заполняется значениями из формы. Поэтому, если появятся новые поля - они будут затираться, если их нет на форме; возможна атака в виде подделки скрытого поля ${candidate.id} в post-заросе).
- В общем случае, в /saveCandidate это уже 3 объект, назовем его Candidate(s1), и вот он сохраняется в базу

Я вижу 2 способа решить проблему:
1) инжектить полный объект Candidate(h) (если хочется сэкономить, списки можно сделать ленивыми); сохранять его в сессию.
2) если не сохранять в сессию, то получать полный объект Candidate(h) в методе saveCandidate и заполнять те поля, которые мы хотим поменять из Candidate(s1)

объект получен хибернейтом всё таки изначально.
Это что-то типа личного кабинета, где иможно имя, адрес, телефон .... поменять.
вызывается метод контроллера, который грузит кандидата соответствующего, сохраняется в request(думаю, что model.addAttribute(?,?) это делает) данные выводятся в текстовых полях формы с возможностью изменения. по кнопке эти данные считываются в новый объект кандидата и пытаются сохраниться.

с hidden полем действительно беда получается, но иначе придётся действительно в сессию класть объект)
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38366869
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redwhite90забыл ник,

авторвсегда, когда подгружает из базы

Так где у меня подгрузка из базы то?
у меня только загрузка в базу. Но конструктор то вызвался.

ну где же? где? мне правда очень интересно
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38366876
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
брейкпоинт таки не судьба поставить?
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38367099
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никбрейкпоинт таки не судьба поставить?

Как я могу все случаи проверить когда он вызывается?

написать все возможные вызовы хибернейтом этого объекта?
...
Рейтинг: 0 / 0
Вопрос по хибернейту
    #38367156
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90… Благодаря возможностям спринга я могу получить частично заполненный объект кандидата…
Код в студию, потому как причина в нём и в org.hibernate.event.def.OnUpdateVisitor
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по хибернейту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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