java - CQEngine 是否支持事务更新?
问题描述
我希望有一些底层资源的可查询堆上镜像。当使用CQEngine索引不受我们控制的类 (*) 时,我们如何实现事务更新(如果读取器由于删除+添加语义而丢失数据,那么所有这些并发的意义何在!)。
(*)TransactionalIndexedCollection
坚持破坏类型的equals
方法,以使等效对象不再存在equals()
!
此外,提供的equals
方法涵盖“所有字段”而不是“pk 字段”,因此会导致重复。如何使用自己的 PK 创建可原子更新的集合?
解决方案
如果您想使用TransactionalIndexedCollection进行原子更新,则必须遵循其关于如何实现equals()
以及hashCode()
将存储在其中的对象的指导。
但是,您不需要将不直接控制的对象存储在索引集合中。例如,您可以编写一个包装器对象,将其存储在集合中 - 这将equals()
根据hashCode()
指导实施。这样您就不需要修改您无法控制的对象。
您可以编写属性,以便给定包装对象,它们实际上读取字段或从内部对象调用 getter 方法。
推荐阅读
- json - 我们如何在 wso2 esb 流中存储元素值?使用属性 Mediator 我们可以存储多个值吗?
- elasticsearch - Logstash MalformedCSVError: Illegal quoting in line | 如何配置 logstash conf 以读取多列多行 CSV?
- angular - 在 Firestore 客户端使用令牌声明和分组通知的安全性
- python - Python:实例方法在被自身调用时返回“none”
- kotlin - Kotlin:“折叠”函数如何接受一个参数?
- encryption - 多次转发的视频如何在数据库中存储为单个副本?
- spring - Spring Boot jpa 防止自动更新
- html - Laravel 单选按钮未选中
- jmeter - 在 Jmeter 中生成 Html 报告失败
- c# - 此平台不支持从 powershell 创建 NHibernate 配置的操作