【发布时间】:2014-03-17 16:00:18
【问题描述】:
我使用的是 db4o 8.1 的可嵌入版本。问题是当我检索一个对象并只调用一个属性集时,它似乎将值保存在缓存中,即使我尝试按 ID 检索,后续检索也会给我相同的参考。
以下代码用于从 db 中检索对象。
public Customer retrieveCustomer(final String id) {
ObjectContainer db = getDataSource();
Customer customer = null;
try {
List<Customer> result = db.query(new Predicate<Customer>() {
private static final long serialVersionUID = 1L;
public boolean match(Customer pilot) {
return pilot.getId().equalsIgnoreCase(id);
}
});
if (result.size() > 0) {
customer = result.get(0);
}
}
catch (Exception e) {
logger.error("Internal db failed to retrieve the object.", e);
}
return customer;
}
在代码中的某个地方我做了 setName("xyz");从“abc”的原始值,我不会在任何地方提交。
customer.setName("xyz"); // no commit or store
这里一切都很好,但是当再次从 db 检索对象时,它给了我 xyz 而不是“abc”,因为我没有存储或提交前一个对象。
当我重新启动服务器(关闭并打开数据库)时,旧值被恢复
请帮忙。
【问题讨论】: