Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> spring, hashset непонятки с апдейтом 
:(
    Опции темы
Adept
Дата 2.3.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 10.7.2003
Где: Санкт-Петербург

Репутация: нет
Всего: 2



Приложение спринг + хибернейт. 
В контроллере происходит добавление роли пользователю:
Код

protected void doSubmitAction(Object command) throws Exception {
    UserRoleCommand URCommand = (UserRoleCommand)command;
    User user = userService.getUser(URCommand.getUid());
    Role role = roleService.getRole(URCommand.getRoleId());
    user.getRoles().add(role);
    userService.updateUser(user); //getHibernateTemplate().update(user);
}    

В классе User роли в виде Set roles = new HashSet();
При добавлении роли пользователю, все ок т.е. запись появляется в таблице ассоциаций tbUserRole. Если я повторно пытаюсь дать этуже роль пользователю, вылетает ошибка. Но по идее если я пытаюсь добавить запись в множество типа HashSet, сначала идет проверка есть ли уже такая запись и если есть то вставка непроисходит. У меня же идет добавление при котором вылетает ошибка:

Код

[DEBUG] 12:50:03 SQL - insert into tbRoleUser (UID, RoleID) values (?, ?)
Hibernate: insert into tbRoleUser (UID, RoleID) values (?, ?)
[DEBUG] 12:50:03 LongType - binding '1' to parameter: 1
[DEBUG] 12:50:03 LongType - binding '1' to parameter: 2
[ WARN] 12:50:03 JDBCExceptionReporter - SQL Error: 2627, SQLState: 23000
[ERROR] 12:50:03 JDBCExceptionReporter - Violation of PRIMARY KEY constraint 'PK_tbRoleUser'. Cannot insert duplicate key in object 'dbo.tbRoleUser'.
[ERROR] 12:50:03 AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not insert collection rows: [webmin.model.User.roles#1]
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:63)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1087)
    at org.hibernate.action.CollectionUpdateAction.execute(CollectionUpdateAction.java:48)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
    at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:388)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:363)
    at org.springframework.orm.hibernate3.HibernateTemplate.update(HibernateTemplate.java:644)
    at org.springframework.orm.hibernate3.HibernateTemplate.update(HibernateTemplate.java:640)
    at webmin.hibernate.UserDaoHibernate.updateUser(UserDaoHibernate.java:22)
    at webmin.service.UserServiceImpl.updateUser(UserServiceImpl.java:20)
    at webmin.web.GrantUserRoleController.doSubmitAction(GrantUserRoleController.java:59)
    at org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:415)
    at org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:382)
    at org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:356)
    at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:258)
    at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:249)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:358)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:833)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
    at java.lang.Thread.run(Thread.java:595)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Violation of PRIMARY KEY constraint 'PK_tbRoleUser'. Cannot insert duplicate key in object 'dbo.tbRoleUser'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteUpdate(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
    at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:22)
    at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1073)
    ... 43 more


Подскажите почему так. Если надо, я покажу маппинг или пожо классы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1354 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.