Class KeyRange

  • All Implemented Interfaces:
    Serializable, Iterable<Key>

    public final class KeyRange
    extends Object
    implements Iterable<Key>, Serializable
    Represents a range of unique datastore identifiers from getStart().getId() to getEnd().getId() inclusive. If an instance of this class is the result of a call to DatastoreService.allocateIds(), the Keys returned by this instance have been consumed in the datastore's id-space and are guaranteed never to be reused.
    This class can be used to construct Entities with Keys that have specific id values without fear of the datastore creating new records with those same ids at a later date. This can be helpful as part of a data migration or large bulk upload where you may need to preserve existing ids and relationships between entities.
    This class is threadsafe but the Iterators returned by iterator() are not.
    See Also:
    Serialized Form
    • Constructor Detail

      • KeyRange

        public KeyRange​(Key parent,
                        String kind,
                        long start,
                        long end)
    • Method Detail

      • getStart

        public Key getStart()
        Returns the first Key in the range.
      • getEnd

        public Key getEnd()
        Returns the last Key in the range.
      • getSize

        public long getSize()
        Returns the size of the range.
      • equals

        public boolean equals​(@Nullable Object obj)
        Overrides:
        equals in class Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object