问题标签 [javers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 通过键查询 MapChange 和 EntryValueChange 的 JQL
是否可以构建 JqlQuery,它通过其键返回特定 EntryValueChange 的更改?就像是:
如果没有,手动过滤是唯一的选择还是我可以以某种方式扩展服务?
javers - 将 ID 为 NULL 的实体视为 NEW
对于“使用实体 ID 保存差异”这个问题,我找到了以下答案:
“对于实体,Id 属性不能为 null,因此您需要将此类映射为 ValueObject。如果是,则 Id 属性被视为常规属性,它不会转到该对象的 GlobalId。”
我的问题是:
如果 Id 为 NULL,为什么不能将实体视为 NEW?
我有一个从数据库中获取的对象图,在两个 javers 提交之间,一个实体被添加到图中的列表中。
- 两次提交,在第二次提交中有一个新实体(Id NULL)
- 获取更改 => 例外,因为 Javers 无法创建 GlobalId。
我可以通过执行 EntityManager 来解决这个问题 - 持久化(创建 Id:s),但我想避免这样做。当前的代码可能会在稍后进行持久化,或者它只是让事务完成。
因为 Id 为 NULL,所以实体是 NEW。是否可以生成一个唯一的临时 Id(允许 Id = NULL)来创建 GlobalId?在更改列表中,实体将被报告为 NEW。无需与较早的提交进行比较。
javers - Javers“jv_commit”不存在
我正在尝试使用我的项目设置 Javer。我正在使用 Hibernate JPA,我相信我已经正确配置了所有内容。
这是我的 Spring 配置:
JaversAuditController bean:
我必须使用 BEAN 映射样式,因为 JPA 注释在实体的访问器上。
这是 JaversRepoConnectionProvider bean:
}
我正在进行人工审核。也就是说,每次保存实体时,我都会调用 javers.commit() 方法。碰巧的是,我尝试保存的第一件事会导致 MySQL 语法错误,指出表“jv_commit”不存在。文档说明会自动创建必要的表,所以我一定遗漏了一些东西。请提前告知和感谢。
截断的堆栈跟踪:
java - Javers 比较具有不同顺序的列表
我有两个具有相同数据但顺序不同的列表。
为什么 JaverscompareCollections
方法会看到 Levenshtein 距离的两个变化(一个 ValueRemoved 和一个 ValueAdded)?
也许 Javers 不允许带有@Id
注释的多个字段?
代码:
结果:
spring - Javers - 使用 Javers 代替 Envers 有什么优势?
我正在使用 Spring Data REST 开发一个 RESTful API。现在对于审计,Spring 确实可以选择审计元数据created_date
,modified_date
但它们不提供实体版本控制。
目前有两个流行的实体版本库,即 Envers 和 Javers。我已经查看了两者的比较,但没有关于这个问题的任何文章。
那么使用 Javers 而不是 Envers 的优缺点是什么?
javers - 为什么我不能创建自己的 GlobalIdDTO 实例
为什么这不合法?
我们正在尝试从不在类路径中的 Object.class 中创建通用 api。既然最后都只是一个字符串,为什么我不能创建自己的 GlobalIdDTO 返回这个字符串?
这是我从 api 获得的堆栈跟踪:
有没有地方我应该能够注册这样的对象?
spring - Javers - 如何在 Spring Boot 中删除和创建 Javers 表?
jv_snapshot
每次运行 Spring Boot 应用程序时,如何从头开始创建 Javers 表?
java - javers CdoSnapshot.SnapshotType 从 mssql 到 h2 不同
我尝试审核一个对象。我的问题是,我不是在每个数据库上都得到相同的结果。
我的实体:
测试方法:
在带有 openjpa 的 mssql 上,我的 systemout 如下所示:
更新
最初的
最初的
在 H2 上,结果看起来不同:
更新
更新
最初的
我会说第一个输出是错误的。不是吗?为什么他们不同。我做错了什么?
我为 mssql 创建了 javers,所以:
对于 h2:
任何想法?
谢谢
更新:
如果我在没有 openjpa 的情况下使用 mssql:
它按预期工作。
更新
更新
最初的
我对openjpa做错了吗?
更新 2 我用另一个实体(bob1)扩展了我的测试用例:
mssql 中的表 jv_snapshot 现在有以下记录:
第一个实体的第二个类型(初始)错误,并且版本也错误。第二个实体对我来说看起来不错。
它是一个错误吗?
javers - javers 的新手,如何从差异中迭代和获取所有属性名称
我是javers的新手。
我有两个具有属性的相同对象,我需要获取所有不同属性的列表。
这行得通
并显示
change=ValueChange{globalId:'com.stuff.Member/', property:'currentRank', oldVal:'Friend12', newVal:'Dimaon'}
虽然我认为它很简单,但我如何访问 Change 的属性?
或者我应该以不同的方式迭代不同的差异?
我的最终目标是获取不同属性的列表。
谢谢
javers - 仅保存 JV_SNAPSHOT 表上的更改而不是整个对象以供审核
我正在尝试实现 Javers 来审计我相当复杂的对象,到目前为止我很喜欢它。但是当我看到数据库时,会为我的对象保存整个快照,最终在我的用例中会变得庞大。由于我只使用 Javers 来审核更改而不是从快照中恢复对象,有什么方法可以让我在后续对象提交时只存储更改的属性?