gpt4 book ai didi

java - Hibernate更新记录并实现监听器: getting only required attribute values for event. getOldState()

转载 作者:行者123 更新时间:2023-12-01 15:58:17 25 4
gpt4 key购买 nike

我使用 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>

我添加了一个更新后监听器。它将做的是,如果对用户执行任何更新,那么它将被调用,并且更改将被插入到审计表中。

下面是更新后事件的示例实现。

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;
}

这是我的要求。 event.getPersister().getEntityMetamodel() .getPropertyNames();或 event.getOldState();或 event.getState();

必须返回我可以更新或插入的属性名称或值。

有没有办法控制上面的返回值。

请在这方面帮助我。

谢谢

纳伦德拉

最佳答案

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.

不确定我是否理解...您是否希望这些特定方法返回属性名称和/或值的集合,以便您在审计表中的单独 SQL 插入/更新子句中仅使用这些?您是否在每个属性的基础上插入该表?

另外,您读过 Hibernate Envers 吗? Envers 是用于审计目的的 Hibernate“扩展”:http://docs.jboss.org/envers/docs/index.html

关于java - Hibernate更新记录并实现监听器: getting only required attribute values for event. getOldState(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com