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

Reply via email to