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:


  | @Stateful
  | @Scope(CONVERSATION)
  | @Name("register")
  | 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();
  |     
  |     @In
  |     private EntityManager em;
  |     
  |     //-----CONSTRUCTORS-----
  |     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 ...
  |     
  |     //-----ACTIONS-----
  |     public boolean getRenderSuccess()
  |     {
  |     return this.renderSuccess;
  |     }
  |     @TransactionAttribute(TransactionAttributeType.REQUIRED)
  |     @Rollback(ifOutcome={"failure"})
  |     public String register()
  |     {
  |     if (this.hasErrors()) {
  |         return "failure";
  |     }
  | 
  |     //add the loginObject to the entity
  |     this.loginEntity.setEntity(this.currentUser);
  |     
  |     try {
  |         this.em.persist(this.currentUser);
  |         this.em.persist(this.loginEntity);
  | 
  |         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 && 
  |             getPasswordCheck()==null
  |             );
  |     }
  | }
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3997190#3997190

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3997190
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to