@Test public void partialUpdateTest() throws Exception { MorphiumSingleton.get().clearCollection(PartUpdTestObj.class); PartUpdTestObj o = new PartUpdTestObj(); o.setName("1st"); o.setValue(5); MorphiumSingleton.get().store(o); waitForWrites(); Query<PartUpdTestObj> q = MorphiumSingleton.get().createQueryFor(PartUpdTestObj.class); q = q.f("value").eq(5); PartUpdTestObj po = q.get(); assert (po.getValue() == o.getValue()) : "Values different?"; assert (po.getName().equals(o.getName())) : "Names different?"; assert (po instanceof PartiallyUpdateable) : "No partial updateable?"; po.inc(); assert (((PartiallyUpdateable) po).getAlteredFields().contains("value")) : "Value not changed?"; MorphiumSingleton.get().store(po); po.setName("neuer Name"); assert (!((PartiallyUpdateable) po).getAlteredFields().contains("value")) : "Value still in altered fields?"; assert (((PartiallyUpdateable) po).getAlteredFields().contains("name")) : "Name not changed?"; MorphiumSingleton.get().store(po); waitForWrites(); q.setReadPreferenceLevel(ReadPreferenceLevel.PRIMARY); po = q.q().f("value").eq(6).get(); assert (po.getName().equals("neuer Name")) : "Name not changed?"; }