当前位置: 首页 > 面试题库 >

Hibernate Envers-不写createQuery(…).executeUpdate()的审核记录,仅写.persist()和.merge()

莫英卓
2023-03-14
问题内容

我有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编写的而不是合并的,所以我真的需要使用它来处理现有代码

有人可以帮忙吗?


问题答案:

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



 类似资料:
  • 问题内容: 我有3种方式将内容写入数据库 我遇到的问题是为了让Hibernate Envers实际将审核记录写入相应的x_aud和revinfo DB表中。它仅适用于“ .persist()”或“ .merge()”。我无法使其适用于’createQuery(…). executeUpdate() ‘ 我是否缺少某些东西,或者只是无法使用?问题是,我的很多代码都是使用.executeUpdate编

  • PutResult put(PutRequest request) 功能 添加或修改表的一条记录,可以包括全部或者部分属性,也可以指定条件,当条件成立时才写入成功 消耗一个单位写配额,如果带了条件,还消耗一个单位读配额(另外如果创建了EAGER类型的二级索引,每个Eager二级索引需要1个额外读配额) 方法参数 request : PutRequest : required PutRequest

  • 我在Java中编写了一个更新由制表符分隔的文本文件的方法。我正在使用opencsv库。首先我在现有文件中读取,然后我更改一些列的值,然后我覆盖文件。我正在运行Windows 7。现在的问题是,并非所有内容都写入文件。即使我不更改任何值,只是覆盖文件,也不是所有记录都写入。 我的代码如下。它有什么问题?

  • 我有一个登录配置问题。下面是我的logback.xml: 问题是当我为根记录器设置以下行时:

  • 在rebase指定i选项,您可以改写、替换、删除或合并提交。 主要使用的场合: 在push之前,重新输入正确的提交注解 清楚地汇合内容含义相同的提交。 添加最近提交时漏掉的档案