Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как быть если от формы получаю с id=0 / 17 сообщений из 17, страница 1 из 1
16.04.2012, 12:38:46
    #37755305
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Столкнулся с проблемой.
Отдаю заполненный полученный из базы данных бин в форму с id=11..., а получаю обратно с id=0. Т.е. немогу сделать update по нему

Как быть? Наверняка ктото сталкивался.....
...
Рейтинг: 0 / 0
16.04.2012, 13:02:02
    #37755341
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Можно id хранить в hidden поле. Можно целиком объект хранить в HttpSession, и апдейтить его значениями с формы.
...
Рейтинг: 0 / 0
16.04.2012, 13:15:38
    #37755364
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
А можно0ли поставить аннотацию в domain над полем id, чтобы поле не трогалось?
...
Рейтинг: 0 / 0
16.04.2012, 13:24:28
    #37755372
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
ccoderА можно0ли поставить аннотацию в domain над полем id, чтобы поле не трогалось?
Что значит "трогалось". Как вы определяете что оно у вас "трогается"? Может у вас новый бин собирается из полей формы, а ID там нет, потому что оно уже "не трогается".
Какие вообще фреймверки и технологии вы используете в вашей задаче?
...
Рейтинг: 0 / 0
16.04.2012, 13:32:03
    #37755388
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Spring MVC
...
Рейтинг: 0 / 0
16.04.2012, 13:33:05
    #37755391
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Ну да у меня новый наверно объект, помучто даже с 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
16.04.2012, 13:33:31
    #37755392
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Как тут быть?
...
Рейтинг: 0 / 0
16.04.2012, 13:39:03
    #37755405
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Т.е. id поле перед обновлением заполнено (не 0)
...
Рейтинг: 0 / 0
16.04.2012, 13:39:30
    #37755406
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Использую Hibernate, Spiring MVC
...
Рейтинг: 0 / 0
16.04.2012, 13:54:34
    #37755426
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
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
16.04.2012, 14:26:29
    #37755496
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Спасибо за изъяснение.

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

По порядку
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
16.04.2012, 14:29:47
    #37755502
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
...
Рейтинг: 0 / 0
16.04.2012, 14:30:29
    #37755503
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
Как видно, даже адреса у объектов совпадают.
В чёмже дело...
...
Рейтинг: 0 / 0
16.04.2012, 14:33:25
    #37755510
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
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
16.04.2012, 14:34:58
    #37755518
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
ccoderКак видно, даже адреса у объектов совпадают
Круто. Два объекта расположились по одному и тому же адресу в памяти. Чудеса архивации данных?
...
Рейтинг: 0 / 0
16.04.2012, 14:35:29
    #37755519
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как быть если от формы получаю с id=0
ccoder,

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


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