A public API to get the value originally read for an Entity Attribute from the database

There is an 'undocumented and smart' API to get get the value originally read for an Entity Attribute from the database. Thanks to Steve for sharing this. You may need to call EntityImpl::getAttribute(attrIndex,EntityImpl.ORIGINAL_VERSION) to get the original value of the attribute.

As you may be aware, there is a 'well known' protected method EntityImpl::getPostedAttribute(int index) also available for the same purpose. In this case, you may need to sub class the EntityImpl
to increase the visibility, if you want to use it in your business service implementation.

Comments

Sergio M said…
Hi Jobinesh.

I know that this post is old but I ended up here finding information about this issue. My problem it's that I can't get the old value from a Clob attribute.

Originally I tried with the same code as in other type of fields:
getPostedAttribute(i);
getAttribute(i);

After seeing your post I tried this:
getAttribute(i, EntityImpl.ORIGINAL_VERSION); getAttribute(i, EntityImpl.CURRENT_VERSION);

In both cases the new value and the old value are the same value, corresponding with the new value, is there any way to get the old value from a CLOB attribute?

Thanks in advance.
Sergio M said…
I forgot to add, I'm doing this from a extended class of oracle.jbo.server.EntityImpl in the doDML method.

Disclaimer

The views expressed on this blog are my own and do not necessarily reflect the views of my employer.