Обновление записей в спящем режиме и реализация прослушивателей: получение только необходимых значений атрибута для event.getOldState () - PullRequest
0 голосов
/ 03 января 2011

Я использую Hibernate 3 в качестве своей среды персистентности.Ниже приведен пример файла hbm, который я использую.

<?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>

Я добавил прослушиватель после обновления.Что он будет делать, если какие-либо обновления будут выполнены на Пользователе, то он будет вызван, и в таблицу аудита будут вставлены канги.

Ниже приведен пример реализации события postupdate.Вот мое требование.event.getPersister (). getEntityMetamodel () .getPropertyNames ();или event.getOldState ();or event.getState ();

должен возвращать имена атрибутов или значения, которые я могу обновлять или вставлять.

Есть ли способ контролировать возвращаемые значения выше своих.* Просьба помочь мне в этом отношении.

Спасибо,

Нарендра

Ответы [ 2 ]

1 голос
/ 03 января 2011

Вот мое требование. event.getPersister (). getEntityMetamodel () .getPropertyNames (); или event.getOldState (); или event.getState (); должен возвращать имена атрибутов или значения, которые я могу обновить или вставить.

Не уверен, что я понимаю ... Вы хотите, чтобы эти конкретные методы возвращали коллекцию имен атрибутов и / или значений, чтобы вы использовали только их в отдельном предложении SQL вставки / обновления в таблицу аудита? Вы вставляете в эту таблицу отдельно для каждого атрибута?

Кроме того, вы читали о Hibernate Envers? Envers является расширением Hibernate для целей аудита: http://docs.jboss.org/envers/docs/index.html

0 голосов
/ 05 января 2011

Проблема может быть решена с помощью PostInsertEvent.getPersister (). GetPropertyInsertability ();

Возвращает логический массив. Поэтому, проверив этот массив, мы можем определить, нужно ли их вставлять в таблицу аудита или нет.

...