Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-1775

Get original object state for audit purpose

    XMLWordPrintableJSON

Details

    • Question
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • 2.0.0
    • None
    • Enhance, kernel
    • None
    • GlassFish 3, OpenJpa 2.0

    Description

      I need to get original object state before a merge() is called.

      I tried in my service edit() method, by using :

      public void edit(Customer customer) {
      Customer initialState = null;
      log.info("About to update customer id " + customer.getCustomerId() + " with name " + customer.getName());

      PersistenceCapable currentState = (PersistenceCapable)customer;

      try

      { StateManagerImpl sm = (StateManagerImpl)currentState.pcGetStateManager(); SaveFieldManager sfm = sm.getSaveFieldManager(); PersistenceCapable oldState = sfm.getState(); initialState = (Customer)oldState; log.info("Customer id " + customer.getCustomerId() + " OLD NAME WAS " + initialState.getName()); }

      catch (Exception e)

      { log.severe("Failed to get old object state: " + e.toString()); }

      getEntityManager().merge(customer);
      }

      I get the error:

      SEVERE: Failed to get old object state: java.lang.ClassCastException: org.apache.openjpa.kernel.DetachedStateManager cannot be cast to org.apache.openjpa.kernel.StateManagerImpl

      Can you please suggest a way to get the original loaded object?

      Attachments

        Activity

          People

            Unassigned Unassigned
            radu01 Radu B
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: