The database contains these two users: User name: Abel First name: Abel Last name: Tasman etc.
User name: James First name: James Last name: Cook etc. As a test I load user 'James' into the BeanEditForm of UpdateUser.java, and attempt to change his user name to 'Abel' (an illegal change). This page's onValidate method attempts to instantiate a user 'userVerif' using the new user name entered into the form: 'Abel'. If instantiating userVerif is successful (someone has this user name), and userVerif is a different user (if both users are the same it simply means the form was submitted without an altered user name field), it means that this user name is already taken, so onValidate() records an error. If no error is recorded, onSuccess() is then fired, and this is where the updated user is finally committed to database: "crudServiceDAO.update(user)". At least this is my intention. What actually happens in the above test scenario is that the user object loaded into the BeanEditForm, on hitting the submit button, becomes... User name: Abel First name: James Last name: Cook So far so good, because this is still within onValidate(), not onSuccess() where the user instance is committed using "crudServiceDAO.update(user)". But seemingly when the line... User userVerif = crudServiceDAO.findUniqueWithNamedQuery(User.BY_USERNAME, QueryParameters.with("userName", user.getUserName()).parameters()); is reached, the exception below occurs... 13-01-2018 20:57:10 DEBUG UpdateUser:74 - [ENTER] onValidateFromUpdateForm() 13-01-2018 20:57:10 DEBUG UpdateUser:177 - onValidateFromUpdateForm 13-01-2018 20:57:10 DEBUG UpdateUser:179 - Form user: [Abel|James|Cook] 13-01-2018 20:57:11 WARN SqlExceptionHelper:145 - SQL Error: 1062, SQLState: 23000 13-01-2018 20:57:11 ERROR SqlExceptionHelper:147 - Duplicate entry 'Abel' for key 'UK_h029unq4qgmbvesub83df4vok' 13-01-2018 20:57:11 DEBUG UpdateUser:165 - [ FAIL] onValidateFromUpdateForm -- org.hibernate.exception.ConstraintViolationException org.hibernate.exception.ConstraintViolationException: could not execute statement I'm confused by the "Duplicate entry 'Abel'" exception, as at this stage there ought only be one 'Abel' in the database. If onSuccess() attempted "crudServiceDAO.update(user)" with a user also having userName=Abel, then naturally I would be expecting to see this exception error. But this is not the case. Regards, Chris. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org