Hibernate Envers-不为createQuery(...)。executeUpdate()编写审核记录,仅.persist()和.merge()

浏览:31日期:2024-03-02
如何解决Hibernate Envers-不为createQuery(...)。executeUpdate()编写审核记录,仅.persist()和.merge()?

看起来 是正确的-如果要创建本机SQL查询,请使用的createNativeQuery(StringsqlString)方法EntityManager。使用createquery(String ejbqlString)如果您正在使用EJBQL是唯一可能的。希望这会有所帮助。

解决方法

我有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 DB表中。它仅适用于“ .persist()”或“.merge()”。我无法使其适用于’createQuery(…). executeUpdate()

我是否缺少某些东西,或者只是无法使用?问题是,我的很多代码都是使用.executeUpdate编写的而不是合并的,所以我确实需要使用它来处理现有代码。

有人可以帮忙吗?

相关文章: