我使用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 is employee.id,Value is employee object]
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方法返回pay属性设置为false的对象。
我在这里缺少什么?
- 更新:当我更改employee.name属性时,它工作正常。似乎与超类或布尔类型有关。
答案 0 :(得分:2)
我的超类EmployeeEntity没有实现Serializable。所以,在放入缓存时,hazelcast并没有将其序列化。它实现了Serializable。