I had a similar problem.
My "Find" Session Sateful bean had a liost of users.
My Controller Stateful conversational fiddled with the store of users.
When my Controller update the database; this was "behind" the back of the
"Find" bean; so it didnt get reflected to the "find" beans "em" cache.
My solution is below (Gavin may have a better way to do it; but this works for
me)
(need to inject the "Find" bean into the crud Controller bean naturally)
| @End
| @TransactionAttribute(TransactionAttributeType.REQUIRED)
| public String update() {
| log.info("> update");
|
user.setPassword(encryptionController.encrypt(user.getPassword()));
| em.merge(user);
| em.flush();
| facesMessages.addFromResourceBundle("user_update_successful");
|
| /*
| * We need to update this user in the list of users in the
session scoped FindUserController
| */
| if (findUserController != null) {
| log.info("User sent to database => " + user);
| findUserController.updateUserInExistingList(user);
| }
|
| log.info("< update");
| return "findUser";
| }
|
| public void updateUserInExistingList(User updatedUser) {
| log.info("> updateUserInExistingList");
| List<User> usersList = new ArrayList<User>();
| for (User eachUser : users) {
| if (updatedUser.getId() != eachUser.getId()) {
| usersList.add(eachUser);
| } else {
| em.refresh(eachUser); // Force the update of
the user in the em cache.
| log.info("User from the DBase (refreshed) => "
+ eachUser);
| usersList.add(eachUser);
| }
| }
| users = usersList.toArray(new User[0]);
| applyCurrentQuery();
| log.info("< updateUserInExistingList");
| }
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4014239#4014239
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4014239
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user