powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как быть если от формы получаю с id=0
17 сообщений из 17, страница 1 из 1
Как быть если от формы получаю с id=0
    #37755305
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с проблемой.
Отдаю заполненный полученный из базы данных бин в форму с id=11..., а получаю обратно с id=0. Т.е. немогу сделать update по нему

Как быть? Наверняка ктото сталкивался.....
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755341
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно id хранить в hidden поле. Можно целиком объект хранить в HttpSession, и апдейтить его значениями с формы.
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755364
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно0ли поставить аннотацию в domain над полем id, чтобы поле не трогалось?
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755372
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoderА можно0ли поставить аннотацию в domain над полем id, чтобы поле не трогалось?
Что значит "трогалось". Как вы определяете что оно у вас "трогается"? Может у вас новый бин собирается из полей формы, а ID там нет, потому что оно уже "не трогается".
Какие вообще фреймверки и технологии вы используете в вашей задаче?
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755388
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spring MVC
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755391
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да у меня новый наверно объект, помучто даже с hidden field id

авторCould not execute JDBC batch update; SQL [insert into ACCOUNT (login, password, id)
values (?, ?, ?)]; constraint [USER2.LOGIN_UK1]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execut
e JDBC batch update
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755392
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как тут быть?
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755405
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. id поле перед обновлением заполнено (не 0)
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755406
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую Hibernate, Spiring MVC
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755426
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://stackoverflow.com/questions/8116612/spring-3-mvc-form-backing-object-has-to-be-in-session-how-can-i-avoid-this
Есть два подхода.
Первый - простой и надежный. При загрузке формы, нужно поместить бин в сессию @SessionAttribute.
В методе, который обрабатывает submit, так же указать что это бин хранится в HTTP сессии. Тогда Spring вытянет его из сессии. Установит новые значения и вы получите готовый для полноценной работы Hibernate Bean.

У этого способа есть только одна проблема. Это излишний расход памяти для хранения HTTP Session. В высоконагруженых кластерхных решениях это серьезные затраты на память и репликацию. В этом случае ID бина передают на форму в виде hidden поля.
(Можно и более хитроумные данные передавать в скрытое поле, не только Id, а, например, целиком сериализованый бин)
Но в этом случае вы отгребете сложностей в работе с Hibernate коллекциями, ленивыми свойствами и т.п.
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755496
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за изъяснение.

Но чтото всеравно немогу сохранить объект.

По порядку
1. сохраняю
Код: java
1.
sessionFactory.getCurrentSession().save(account);


2. Перед отправкой в форму всё прекрасно сохраняется.
3. После формы, id теперь есть (сделал с @SessionAttribute), но при сохранении
авторorg.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [insert into ACCOUNT (login, password, id)
values (?, ?, ?)]; constraint [USER2.LOGIN_UK1]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execut
e JDBC batch update
при этом с таким-же самыми полями до формы сохраняется как надо (проверил)

Вот так подробно про один и тотже объект до и после
http://img607.imageshack.us/img607/5232/aaabbbx.png
за исключением rePassword, которое
Код: java
1.
2.
	@Transient
	private String rePassword;


(если заполнить его до формы то тоже сохраняется)
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755502
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755503
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как видно, даже адреса у объектов совпадают.
В чёмже дело...
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755510
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoder
Код: java
1.
sessionFactory.getCurrentSession().save(account);



Изучайте внимательнее:
http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html
save/update/saveOrUpdate
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755518
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoderКак видно, даже адреса у объектов совпадают
Круто. Два объекта расположились по одному и тому же адресу в памяти. Чудеса архивации данных?
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755519
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoder,

необъяснимо, почему insert генерит. Точнее, как раз объяснимо: вы новый объект создаете или сессия у вас истекает и вы в новой сессии объект из предыдущей сохраняете..видимо. Это я по опыту работы с хибером так думаю 4)
...
Рейтинг: 0 / 0
Как быть если от формы получаю с id=0
    #37755527
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь всё понял....
СПАСИБО
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как быть если от формы получаю с id=0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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