gpt4 book ai didi

java - key 已存在时的 hazelcast imap put 方法

转载 作者:行者123 更新时间:2023-11-30 08:58:06 26 4
gpt4 key购买 nike

我正在使用 hazelcast IMap 来保存我的对象。我用 get 方法得到了我需要的对象。但是,当我尝试使用 put 方法更新缓存中的对象属性时,它似乎不起作用。这是逻辑...

public class EmployeeEntity {
private boolean paid;

// public setters and getters
}

public class Employee extends EmployeeEntity {
private String id;
private String name;
// ... and many more

// public setters and getters
}

使用 put 方法()将对象加载到 IMap employeeMap - [Key 是 employee.id,Value 是 employee 对象]

for (Employee employee : employeeList) {
Employee emp = employeeMap.get(employee.id)
if (!emp.isPaid()) {
emp.pay() // set the paid attribute to true
employeeMap.put(employee.id, emp)
}
}

employeeMap 有 ID

"123","456","789".

循环中的员工列表有ID

"123","123","123","789","456","789","456".

列表中重复的员工 ID 每次都被支付,而不是第一次支付。
出于某种原因,put() 没有替换更新的 emp 对象。
每次, get 方法返回 paid 属性设置为 false 的对象。

我在这里错过了什么?

-- 更新:当我更改 employee.name 属性时它起作用了。似乎与父类(super class)或 boolean 类型有关。

最佳答案

我的父类(super class) EmployeeEntity 没有实现 Serializable。因此,hazelcast 在放入缓存时没有序列化它。当我实现 Serializable 时它起作用了。

关于java - key 已存在时的 hazelcast imap put 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27833498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com