gpt4 book ai didi

java - Hibernate Envers - 不为 createQuery(...).executeUpdate() 编写审计记录,只为 .persist() 和 .merge()

转载 作者:搜寻专家 更新时间:2023-11-01 01:13:36 25 4
gpt4 key购买 nike

我有 3 种方法将数据写入数据库

public void create(T object) {
entityManager.persist(object);
}

public void update(T object) {
object = entityManager.merge(object);
}

public int updateStatus(String id, String status) {

final int changes =
entityManager.createQuery("update item set state = :newState," +
" last_modified = current_timestamp" +
" where id = : id ")
.setParameter("newState", status)
.setParameter("id", id)
.executeUpdate();

return changes;
}

我遇到的问题是为了让 Hibernate Envers 将审计记录实际写入相应的 x_aud 和 revinfo 数据库表。它仅适用于“.persist()”或“.merge()”。我无法让它为“createQuery(...).executeUpdate()”工作

我是不是遗漏了什么,或者它不适合这个。问题是,我的很多代码都是使用 .executeUpdate 而不是合并编写的,所以我真的需要它来处理现有代码。

有人可以帮忙吗?

最佳答案

不,如果您使用的是 executeUpdate,Envers 将无法工作。这是因为更新没有通过 Hibernate 的事件机制,因此 Envers 没有机会拦截更改并编写审计。

关于java - Hibernate Envers - 不为 createQuery(...).executeUpdate() 编写审计记录,只为 .persist() 和 .merge(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139856/

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