问题标签 [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.

0 投票
1 回答
252 浏览

java - JaVers 可以返回过滤条目的计数吗?

JaVers 是一个很棒的库。不过,我想知道它是否提供了一种确定 JQL 查询将返回的结果数量的方法。

这在我们的用例中将非常有帮助,这将是:

1) 使用 JaVers 的 skip() 和 limit() 函数只返回一页请求的数据。

2) 确定并返回额外的分页相关数据,比如返回的页面是否是最后一页,系统中存在多少页(这取决于用户指定的页面大小...以及可能的结果的最大数量)系统-我不确定如何最好地检索)。

我意识到我们可以简单地将 JaVers 的 findChanges 方法返回的所有结果加载到内存中以获得完整计数。但是,有没有更有效的替代方案?

非常感谢,本

0 投票
2 回答
1355 浏览

javers - 使用 Javers 比较地图

如何Entity使用 JaVers 按 id、属性比较包含对象的两个地图?

我想检测鲍勃在以下情况下将城市从伦敦更改为巴黎:

0 投票
1 回答
549 浏览

java - 观察列表中删除的对象

我们目前使用的是 JaVers 3.0.0。假设我们有以下两个实体 A 和 B。A 跟踪列表中的一些 B。

这是我们相当简单的 B 类。

让我们对 A 类型的对象提交三个更改:

  • 提交具有空列表的对象
  • 提交带有两个添加 B 的对象
  • 移除一个 B 提交对象

之后我想观察B的变化。

输出显示零变化。我期待看到一个被移除的对象,因为 B 是一个实体并且有一个 Id。我错过了什么?

编辑 感谢您迄今为止在评论中的回答。可能我说的不够详细。对于那个很抱歉。

我要查询的是 A 上的所有更改和 B 上的所有更改。我只提交 A,但也许这就是问题所在?我应该跟踪 A 和 B 吗?

0 投票
2 回答
622 浏览

javers - javers:识别或避免重复的差异结果

我正在使用 JaVers v3.0.0 比较包含对象列表的两个对象。我正在比较的对象在列表的内容上有所不同,例如从列表中删除了一个对象。

执行此比较时,我得到两个更改对象:一个 ListChange 和一个 ObjectRemoved。

在呈现结果时,我需要确保相同的更改不会出现两次。我很难弄清楚如何识别或避免我得到的这些重复。我曾尝试使用 GlobalID,但最终解析的字符串并不完全安全。我也尝试过从演示文稿中跳过 ListChange 或 ObjectRemoved,但是当我也有值列表的 ListChange 或不在列表中的对象的 ObjectRemoved 时,就会出现问题。

以下是运行上述示例代码的输出:

0 投票
1 回答
377 浏览

gradle - 为什么 jcenter 缺少 javers 版本?

我正在使用 jcenter 来解决我在 Gradle 项目中的依赖关系,我从 mavencentral 迁移到 jcenter 存储库,但我注意到 jcenter 中缺少 javers 版本。

例如:http ://repo.maven.apache.org/maven2/org/javers/javers-persistence-mongo/

和:https ://jcenter.bintray.com/org/javers/javers-persistence-mongo/

我使用的是 3.0.0,但它在 jcenter 中丢失了。有什么线索吗?我认为 jcenter 包括 mavencentral ...

0 投票
1 回答
153 浏览

java - 如何对“jv 快照”表中的“状态”列使用压缩以减少数据库大小?

我们使用 MySQL DB 来存储 javers 数据。我们在“jv_snapshot”表中有很多行,所以我们想减少数据库大小。如果 javers 将“状态”列保留为压缩 JSON,那就没问题了。可能吗?我们可以做些什么来减少 javers 快照数据的大小?

0 投票
4 回答
201 浏览

javers - 使用 javers 3.0.0 并且无法在 H2 或 SQLServer 上进行更改

我有一个简单的测试设置来在 Spring Boot 应用程序中创建一个实体(javers 已知),通过提交进行一些更改,然后报告更改。

我希望这能奏效,但我总是没有得到任何改变。

我可以让快照正常工作,但不能在 3.0.0 上进行更改。

有人有类似的经历吗?

示例代码:

样本输出:

更改大小为 0,输出为空白。我尝试了一些变化,但似乎没有任何效果。我什至尝试从 SQLServer 切换到 H2,但得到了相同的结果。

只是想知道我是否误解了文档,或者它是否可能是在 Java 8 上运行的 3.0.0 中的错误。

谢谢!

0 投票
1 回答
577 浏览

java - 处理 javers 审计中的架构更改

我有我的 java 类,它由 Map<String, String> 组成。我正在使用 javers sql 存储库来存储我的审计数据。我最近将我的属性架构更改为 Map<String, List<String>>。现在我在提交域时遇到了以下异常。无法避免架构更改。如何处理此异常?

0 投票
2 回答
979 浏览

java - Javers 集合与父级详细信息的比较

使用 Javers 3.0.2,我需要比较作为对象中嵌套字段的复杂对象的集合,有时它甚至可以是另一个元素列表中的元素列表,依此类推。我正在使用 Levenshtein 列表比较,它要求列表的对象具有定义为 Id 的字段。我可以为所需对象定义 Id 字段,但这种方法的问题是我无法理解层次图中更改对象的完整路径。因此,理想情况下,我希望具有与实体相同的行为,但要以与 ValueObjects 相同的方式生成 Id。

所以,我试图描述的情况如下

而且我需要比较 A 类的 2 个对象。我知道要使用 Levensteing 算法对集合进行充分比较,我需要在 B 和 C 类上添加 @Id 注释。但是在这种情况下,我收到了更改,例如 C@field3#field4 但我不能说更改的 C 对象属于哪个 B 对象,因此我无法有效地构建更改对象的层次结构,例如 A->bList[1]->cList[2 ]

在 ValueObjects 的情况下,我有完整的更改路径,但不可能将 ValueObjects 用作集合的元素。

0 投票
2 回答
859 浏览

java - 是否可以反序列化 Javers Diff?

我正在尝试为现有的遗留系统实现一个简单的差异系统。我正在使用 Javers计算多个潜在对象状态之间的差异,并将它们保存在序列化版本中。我不想在我的对象上提交更改,只需跟踪我的差异。

给定先前序列化的 Diff,有什么方法可以重新创建 Diff 对象?

这是我的用例:

我有一个不想更改的基本实体。系统接收同一实体的新版本,我想知道它们与我的基本实体有何不同。我使用 Javers Diff 发现了差异并可以显示它们,并且显然通过序列化差异来持久化它们,但不能通过序列化差异从数据库中恢复它们。

我想实现相同的一种方法是保留整个更改的替代实体,然后在运行时计算 Diff,但是当只有少数字段发生更改时,似乎没有必要保留整个新实体。由于唯一键,坚持我的实体的替代版本也会弄乱我现有的系统。