You should probably post questions like this to the OpenJPA users or dev
forums [1] instead of creating JIRAs.  Thanks.

Kevin

[1]  http://openjpa.apache.org/mailing-lists.html

On Thu, Aug 26, 2010 at 5:10 PM, Radu B (JIRA) <[email protected]> wrote:

> Get original object state for audit purpose
> -------------------------------------------
>
>                 Key: OPENJPA-1775
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1775
>             Project: OpenJPA
>          Issue Type: Question
>          Components: Enhance, kernel
>    Affects Versions: 2.0.0
>         Environment: GlassFish 3, OpenJpa 2.0
>            Reporter: Radu B
>
>
> 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?
>
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>

Reply via email to