在事务中更新EntryProcessor中条目的对象类型值无效

时间:2019-01-21 05:24:30

标签: ignite

我正在研究ignite 2.7.0

我的值类型如下

public class Entity {
 String id;
 String value;
 Date date;
}

然后与缓存进行如下交互

try (Transaction tx =
 ignite.transactions().txStart(TransactionConcurrency.PESSIMISTIC,TransactionIsolation.SERIALIZABLE)) {
 cache1.invoke("k6", new EntryProcessor<String, Entity, Object>() {
     @Override     
     public Object process(MutableEntry<String, Entity> mutableEntry, Object... objects) throws EntryProcessorException {
         Entity e = mutableEntry.getValue();
         e.setId("hello3");
         e.setValue("v3");
         mutableEntry.setValue(e);
         return null;
     }
 });
 tx.commit();
}

但是提交后输入值不会改变。

如果我按以下方式编写代码,则提交后条目值将更改。

try (Transaction tx =
   ignite.transactions().txStart(TransactionConcurrency.PESSIMISTIC,TransactionIsolation.SERIALIZABLE)) {
   cache1.invoke("k6", new EntryProcessor<String, Entity, Object>() {
       @Override     
       public Object process(MutableEntry<String, Entity> mutableEntry, Object... objects) throws EntryProcessorException {
           mutableEntry.setValue(new Entity("test2", "a2", new Date()));
           return null;
       }
   });
   tx.commit();
}

我发现,调用mutableEntry.getValue()后,提交后对条目的更改将不会生效。

我该如何解决此问题?

非常感谢。

0 个答案:

没有答案