0 Replies Latest reply on Jan 2, 2007 4:13 AM by Bram Biesbrouck

    Object persistence/rollback misconception

    Bram Biesbrouck Newbie

      Hello everyone.
      (Perhaps I should start with a little NY-wish, well, this be it)

      I'm trying to wrap my thoughts around the entire ORM concept of JBoss (Hibernate+Seam in particular) and find it a little confusing, since my whole DB-background has been purely relational. I'd truly appreciate it if someone would take the time to explain it to me.

      This is my case: I have a stateful session bean that creates a new mapped user-object (user data) and a new mapped loginEntity-object (login data) when someone tries to register on the register-page. I'm using the same bean as the ajax-callback bean to validate the entered data while registering.

      When the user submits his/her data, the two entity beans are persisted to the DB, but sometimes, things go wrong with one of them, after the other one has been persisted successfully. I want to do a container-managed rollback on the successfully persisted bean, when the other one fails, using the @Rollback annotation, or any suitable other solution.

      Please advise, here is the code:

      public class RegisterAction implements IRegister
       @In(create=true) @Out
       private Person currentUser;
       @In(create=true) @Out
       private LoginEntity loginEntity;
       private boolean renderSuccess = false;
       ResourceBundle msg = GeneralSettings.getGeneralMessageBundle();
       ResourceBundle regMsg = GeneralSettings.getRegisterMessageBundle();
       private EntityManager em;
       public RegisterAction()
       //-----AJAX CALL ENTRIES-----
       * Note: if a call is added, removed, also remove it from the register()
       * checklist.
       public String getFirstNameCheck()
       String curVal = currentUser.getFirstName();
       String retVal = null;
       if (curVal!=null && curVal.equals("")) {
       retVal = regMsg.getString("missingFirstName");
       return retVal;
       ... more ajax-callbacks ...
       public boolean getRenderSuccess()
       return this.renderSuccess;
       public String register()
       if (this.hasErrors()) {
       return "failure";
       //add the loginObject to the entity
       try {
       this.renderSuccess = true;
       catch (Exception e) {
       FacesMessages.instance().add("registerForm", regMsg.getString("registerPersistanceFailure"));
       return "failure";
       return "success";
       @Remove @Destroy
       public void destroy()
       //-----PRIVATE METHODS-----
       protected boolean hasErrors()
       return !(
       getFirstNameCheck()==null &&
       getLastNameCheck()==null &&
       getAddressCheck()==null &&
       getPostalCodeCheck()==null &&
       getCityCheck()==null &&
       getTelephoneCheck()==null &&
       getEmailCheck()==null &&
       getEmailCheck()==null &&