当前位置: 首页 > 知识库问答 >
问题:

为什么Javers会将我的审计实体的ID存储在引号中?

东方宜
2023-03-14

我通过注释相应的Spring Data存储库来审核对具有Javers的com.example.TaskSupply ier实体的更改

@JaversSpringDataAuditable
public interface TaskSupplierRepository extends CrudRepository<TaskSupplier, String> {
}

这个实体的主键是UUID,因此我可以使用

select * from task_supplier where id = 'f463d538-ceb0-498b-a20b-2bb65286d200';

但是,Javers的jv_global_id表中的条目将ID封装为引号,因此为了从该表中检索相应的行,我必须执行

select * from jv_global_id
where type_name = 'com.sourcespace.bidsengine.model.TaskSupplier'
and local_id = '"f463d538-ceb0-498b-a20b-2bb65286d200"';

这是故意的还是窃听器?当上面没有引号的查询无法检索任何内容时,我感到困惑。我使用Postgres、Javers 5.14.0和Spring Boot 2.4.2

共有1个答案

袁波
2023-03-14

这是故意的,它是JSON类型而不是字符串类型。本地Id可以是Java中的任何类型,也可以是值对象,因此它被序列化为JSON。

 类似资料:
  • 以下是我的要求: 异步日志记录-最小化性能影响 将审核数据存储在不同的数据库中-性能原因也是 就我所见,JaVers并不是为上述目的而设计的,但似乎可以适应实现上述目的。方法如下: null null null 由于不在同一事务中执行审计,就像事务失败一样,这会使审计回滚变得复杂。因此,我们只需要审计成功提交的对象。我打算通过使用Hibernate拦截器来实现这一点,监听afterTransact

  • 我的项目中有几个类是由Hibernate处理的,有些是由Envers审核的,有些则不是。现在,当我试图保存某个未经审计的实体时,我得到了以下信息: 有些人可能认为我的数据库中没有审计表,但是Envers甚至不应该试图寻找这个表,因为实体没有被审计。我的类看起来像这样: 因此,每个类都包含一个子类列表,其中包含对其父类的引用。这些类都没有用-注释标记,但它们引用了一些已审核的实体。然而,每个引用都用

  • 问题内容: 因此,我有一个名为Save.php的文件。 它需要两件事:一个文件和新内容。 您可以通过发送类似的请求来使用它。 ..但当然是对网址进行编码。:)为了简化和可读性,我不做任何编码。 该文件有效,但不是内容。 ..我发现.. .. 当稍后通过XHR获取JSON文件时尝试使用时,当然会抛出错误。 要保存内容,我只用.. 我该怎么做才能消除反斜线? 问题答案: 关闭在php.ini关闭。

  • 我已经开发了完全工作的POC,它工作得很好,但是像、和和这样的字段我已经使用Spring特性对这些字段进行了审计。但是这些领域我不想考虑由Javers进行审计。 我们是否可以跳过字段进行审核/更改?

  • 我在试图让被审计的实体引用未被审计的实体时遇到问题。在我们的应用程序中,某些实体在没有使用hibernate的情况下被引导,这些实体是我们的元模型,不需要被审计。 如果我执行代码: 一切都很顺利,但是如果我试图获得B的版本,就会出现错误: 组织.Hibernate.对象不发现例外:不存在具有给定标识符的行 [元foo] Envers通过对metafoo实体的惰性引用成功地查找了B实体。然而,当尝试

  • 问题内容: 我有一个引用实体Bar的实体Foo: 当我坚持使用新的Foo时,它可以引用新的Bar或现有的Bar。当它得到一个现有的Bar(恰好是分离的)时,我的JPA提供程序(hibernate)抛出以下异常: 当我确保对Bar的引用进行管理(附加)时,或者当我在关系中省略级联PERSIST时,一切都很好。 但是,两种解决方案都不是100%令人满意的。如果我删除了级联持久化,显然我不能再以新Bar