Hibernate updating records and implementing listeners : getting only required attribute values for event.getOldState()

Posted by Narendra on Stack Overflow See other posts from Stack Overflow or by Narendra
Published on 2011-01-03T07:49:34Z Indexed on 2011/01/03 7:53 UTC
Read the original article Hit count: 275

Filed under:
|
|
|
|

Hi All,

I am using Hibernate 3 as my persistence framework. Below is the sample hbm file I am using.

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>
      <class name="com.test.User" table="user">
      <meta attribute="implements">com.test.dao.interfaces.IEntity</meta>
      <id name="key" type="long" column="user_key">
            <generator class="increment" />
      </id>
     <property name="userName" column="user_name" not-null="true" type="string" />
     <property name="password" column="password" not-null="true" type="string" />
     <property name="firstName" column="first_name" not-null="true" type="string" />
    <property name="lastName" column="last_name" not-null="true" type="string" />
    <property name="createdDate" column="created_date" not-null="true" type="timestamp"     insert="false" update="false" />
   <property name="createdBy" column="created_by" not-null="true" type="string"  update="false" />
  </class>
</hibernate-mapping>

I am added a post-update listener. What it will do is if there any updations perfomed on User then it will be invoked and cahnges will be inserted to audit table.

Below is the sample implementation for postupdate event.

public void onPostUpdate(PostUpdateEvent event)
{
LogHelper.info(logger, "Begin - onPostUpdate "
    + event.getEntity().getClass().getSimpleName());
if (!this.checkForAudit(event.getEntity().getClass().getSimpleName()))
{
 // check do we need to audit it.
}

// Get Attribute Names
String[] attrNames = event.getPersister().getEntityMetamodel()
    .getPropertyNames();
Object[] oldobjectValue = c
Object[] newObjectValue = event.getState();

this.auditDetailsEvent(attrNames, oldobjectValue, newObjectValue);
LogHelper.info(logger, "End - onPostUpdate");
// return false;
}

Here is my requirement. event.getPersister().getEntityMetamodel() .getPropertyNames(); or event.getOldState(); or event.getState();

must return attribute names or value which i can update or insert.

Is there any way to control the return values of above one's.

Pleas help me on this regard.

Thanks,

Narendra

© Stack Overflow or respective owner

Related posts about java

Related posts about hibernate