首页 > 解决方案 > 为什么 Javers 将我的审计实体的 ID 存储在引号中?

问题描述

com.example.TaskSupplier通过注释相应的 Spring Data 存储库来审计对 Javers 实体的更改

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

这个实体的主键是一个 UUID,所以我可以检索一个实例

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

但是,该实例的 Javersjv_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

标签: javaspring-bootspring-data-jpajavers

解决方案


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


推荐阅读