Replacing Entity Objects
Prev | Chapter 5. Saving and Retrieving Objects | Next

## Replacing Entity Objects

To modify a stored entity object, retrieve it, update it, then put it back to the entity store:

    SimpleEntityClass sec = sda.pIdx.get("keyone");
    sec.setSKey("skeyoneupdated");
    sda.pIdx.put(sec);

Note that because we updated a field on the object that is a secondary key, this object will now be accessible by the secondary key of `skeyoneupdated` instead of the previous value, which was `skeyone`

Be aware that if you modify the object's primary key, the behavior is somewhat different. In this case, you cause a new instance of the object to be created in the store, instead of replacing an existing instance:

    // Results in two objects in the store.  One with a
    // primary index of "keyfive" and the other with primary index of
    //'keyfivenew'.
    SimpleEntityClass sec = sda.pIdx.get("keyfive");
    sec.setPKey("keyfivenew");
    sda.pIdx.put(sec);

Finally, if you are iterating over a collection of objects using an `EntityCursor`, you can update each object in turn using `EntityCursor.update()`. Note, however, that you must be iterating using a `PrimaryIndex`; this operation is not allowed if you are using a `SecondaryIndex`.

For example, the following iterates over every `SimpleEntityClass` object in the entity store, and it changes them all so that they have a secondary index of `updatedskey`:

    EntityCursor<SimpleEntityClass> sec_pcursor = sda.pIdx.entities();
    for (SimpleEntityClass sec : sec_pcursor) {
        sec.setSKey("updatedskey");
        sec_pcursor.update(item);
    }
    sec_pcursor.close();

Prev | Up | Next
Deleting Entity Objects | Home | Chapter 6. A DPL Example