Deprecated List (cayenne-doc: Cayenne Documentation 5.0-M2 API)
Description: deprecated elements

# Deprecated API

## Contents

- Terminally Deprecated
- Packages
- Interfaces
- Classes
- Annotation Interfaces
- Fields
- Methods
- Constructors

- Terminally Deprecated Elements
  Element
  Description
  org.apache.cayenne.access.DataContext.bindThreadObjectContext(ObjectContext)
  if you are using thread context, you can create your own ThreadLocal
  org.apache.cayenne.access.DataContext.getThreadObjectContext()
  if you are using thread context, you can create your own ThreadLocal
  org.apache.cayenne.access.DataContext.threadObjectContext
  org.apache.cayenne.access.DataDomain.performQueries(Collection<? extends Query>, OperationObserver)
  use `DataDomain.onQuery(ObjectContext, Query)` instead.
  org.apache.cayenne.access.DataNode.lookupDataNode(DataMap)
  unused and unneeded
  org.apache.cayenne.access.IncrementalFaultList.fillIn(Query, List<Object>)
  since 5.0, does nothing
  org.apache.cayenne.BaseContext
  since 5.0, use `DataContext` directly
  org.apache.cayenne.BaseDataObject
  since 5.0, use `PersistentObject` directly
  org.apache.cayenne.configuration.Constants.SERVER_ADAPTER_DETECTORS_LIST
  since 5.0, use `Constants.ADAPTER_DETECTORS_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_CONTEXTS_SYNC_PROPERTY
  since 5.0, use `Constants.CONTEXTS_SYNC_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_DEFAULT_TYPES_LIST
  since 5.0, use `Constants.DEFAULT_TYPES_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_DOMAIN_LISTENERS_LIST
  since 5.0, use `Constants.DOMAIN_LISTENERS_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_DOMAIN_NAME_PROPERTY
  since 5.0, use `Constants.DOMAIN_NAME_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_EXTERNAL_TX_PROPERTY
  since 5.0, use `Constants.EXTERNAL_TX_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY
  since 5.0, use `Constants.MAX_ID_QUALIFIER_SIZE_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_OBJECT_RETAIN_STRATEGY_PROPERTY
  since 5.0, use `Constants.CONTEXTS_SYNC_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_PROJECT_LOCATIONS_LIST
  since 5.0, use `Constants.PROJECT_LOCATIONS_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_RESOURCE_LOCATOR
  since 5.0, use `Constants.RESOURCE_LOCATOR`
  org.apache.cayenne.configuration.Constants.SERVER_TYPE_FACTORIES_LIST
  since 5.0, use `Constants.TYPE_FACTORIES_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_USER_TYPES_LIST
  since 5.0, use `Constants.USER_TYPES_LIST`
  org.apache.cayenne.configuration.runtime.JNDIDataSourceFactory
  unused by Cayenne
  org.apache.cayenne.configuration.server.ServerRuntime
  since 5.0, use `CayenneRuntime` class instead
  org.apache.cayenne.configuration.server.ServerRuntime.builder()
  since 5.0, use `CayenneRuntime.builder()` instead
  org.apache.cayenne.configuration.server.ServerRuntime.builder(String)
  since 5.0, use `CayenneRuntime.builder(String)` instead
  org.apache.cayenne.DataObject
  since 5.0, use `Persistent` interface directly
  org.apache.cayenne.dba.PerAdapterProvider
  unused, it is trivial to create per-adapter classes without the common superclass
  org.apache.cayenne.exp.property.CollectionProperty.contains(Collection<V>)
  since 5.0 in favour of `CollectionProperty.containsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.CollectionProperty.contains(V)
  since 5.0 in favour of `CollectionProperty.containsValue(V)`
  org.apache.cayenne.exp.property.CollectionProperty.contains(V, V...)
  since 5.0 in favour of `CollectionProperty.containsValues(V...)`
  org.apache.cayenne.exp.property.CollectionProperty.containsId(Object, Object...)
  since 5.0 in favour of `CollectionProperty.containsIds(Object...)`
  org.apache.cayenne.exp.property.CollectionProperty.containsId(Collection<Object>)
  since 5.0 in favour of `CollectionProperty.containsIdsCollection(Collection)`
  org.apache.cayenne.exp.property.CollectionProperty.notContains(Collection<V>)
  since 5.0 in favour of `CollectionProperty.notContainsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.CollectionProperty.notContains(V)
  since 5.0 in favour of `CollectionProperty.notContainsValue(V)`
  org.apache.cayenne.exp.property.CollectionProperty.notContains(V, V...)
  since 5.0 in favour of `CollectionProperty.notContainsValues(V...)`
  org.apache.cayenne.exp.property.CollectionProperty.notContainsId(Object, Object...)
  since 5.0 in favour of `CollectionProperty.notContainsIds(Object...)`
  org.apache.cayenne.exp.property.CollectionProperty.notContainsId(Collection<Object>)
  since 5.0 in favour of `CollectionProperty.notContainsIdsCollection(Collection)`
  org.apache.cayenne.exp.property.EntityProperty.inId(Object, Object...)
  since 5.0 in favour of `EntityProperty.idsIn(Object...)`
  org.apache.cayenne.exp.property.EntityProperty.inId(Collection<Object>)
  since 5.0 in favour of `EntityProperty.idsInCollection(Collection)`
  org.apache.cayenne.exp.property.EntityProperty.ninId(Object, Object...)
  since 5.0 in favour of `EntityProperty.idsNotIn(Object...)`
  org.apache.cayenne.exp.property.EntityProperty.ninId(Collection<Object>)
  since 5.0 in favour of `EntityProperty.idsNotInCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.contains(Collection<V>)
  since 5.0 in favour of `MapProperty.containsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.contains(V, V...)
  since 5.0 in favour of `MapProperty.containsValues(V...)`
  org.apache.cayenne.exp.property.MapProperty.containsId(Object, Object...)
  since 5.0 in favour of `MapProperty.containsIds(Object...)`
  org.apache.cayenne.exp.property.MapProperty.containsId(Collection<Object>)
  since 5.0 in favour of `MapProperty.containsIdsCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.notContains(Collection<V>)
  since 5.0 in favour of `MapProperty.notContainsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.notContains(V, V...)
  since 5.0 in favour of `MapProperty.notContainsValues(V...)`
  org.apache.cayenne.exp.property.MapProperty.notContainsId(Object, Object...)
  since 5.0 in favour of `MapProperty.notContainsIds(Object...)`
  org.apache.cayenne.exp.property.MapProperty.notContainsId(Collection<Object>)
  since 5.0 in favour of `MapProperty.notContainsIdsCollection(Collection)`
  org.apache.cayenne.exp.TraversalHelper
  since 5.0 as `TraversalHandler` has default no-op implementations for all methods
  org.apache.cayenne.query.QueryRouter.engineForDataMap(DataMap)
  renamed to `QueryRouter.nodeForDataMap(DataMap)`.
  org.apache.cayenne.query.QueryRouter.engineForName(String)
  renamed to `QueryRouter.nodeForName(String)`.
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Object)
  since 5.0, use `SelectById.dataRowQueryId(Class, Object)`
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Object, Object...)
  since 5.0, use `SelectById.dataRowQueryIds(Class, Object...)`
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Map<String, ?>)
  since 5.0, use `SelectById.dataRowQueryMap(Class, Map)`
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Map<String, ?>, Map<String, ?>...)
  since 5.0, use `SelectById.dataRowQueryMaps(Class, Map[])`
  org.apache.cayenne.query.SelectById.dataRowQuery(ObjectId)
  since 5.0, use `SelectById.dataRowQueryObjectId(ObjectId)`
  org.apache.cayenne.query.SelectById.dataRowQuery(ObjectId, ObjectId...)
  since 5.0, use `SelectById.dataRowQueryObjectIds(ObjectId...)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Object)
  since 5.0, use `SelectById.queryId(Class, Object)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Object, Object...)
  since 5.0, use `SelectById.queryIds(Class, Object...)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Collection<Object>)
  since 5.0, use `SelectById.queryIdsCollection(Class, Collection)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Map<String, ?>)
  since 5.0, use `SelectById.queryMap(Class, Map)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Map<String, ?>, Map<String, ?>...)
  since 5.0, use `SelectById.queryMaps(Class, Map[])`
  org.apache.cayenne.query.SelectById.query(Class<T>, ObjectId)
  since 5.0, use `SelectById.queryObjectId(Class, ObjectId)`
  org.apache.cayenne.query.SelectById.query(Class<T>, ObjectId, ObjectId...)
  since 5.0, use `SelectById.queryObjectIds(Class, ObjectId...)`
  org.apache.cayenne.reflect.ClassDescriptor.getSubclassDescriptor(Class<?>)
  since 5.0, will throw UnsupportedOperationException on invocation, use `ClassDescriptor.getSubclassDescriptor(String)`
  org.apache.cayenne.util.DeepMergeOperation
  unused
  org.apache.cayenne.util.EqualsBuilder
  Use `Objects.equals(Object, Object)` or `Objects.deepEquals(Object, Object)` directly.
  org.apache.cayenne.util.HashCodeBuilder
  use `Objects.hash(Object...)` or a manual `31 * h + Objects.hashCode(x)` loop
  org.apache.cayenne.util.Util.hashCode(Collection<?>)
  unused
  org.apache.cayenne.util.Util.isNumeric(CharSequence)
  use `cs.chars().allMatch(Character::isDigit)` or equivalent
  org.apache.cayenne.util.Util.join(Iterable<?>, String)
  use `String.join(CharSequence, CharSequence...)` or `Collectors.joining()`
  org.apache.cayenne.util.Util.nullSafeEquals(Object, Object)
  Use `Objects.equals(Object, Object)` for non-array types, or `Objects.deepEquals(Object, Object)` when the values may be arrays.
  org.apache.cayenne.util.Util.sortedIterator(Iterator<T>, Comparator<T>)
  unused
  org.apache.cayenne.util.Util.toMap(K[], V[])
  use `IntStream.range(int, int)` with `Collectors.toMap(Function, Function)` to build a map from parallel arrays

- Deprecated Packages
  Package
  Description
  org.apache.cayenne.configuration.server
  since 5.0

- Deprecated Interfaces
  Interface
  Description
  org.apache.cayenne.DataObject
  since 5.0, use `Persistent` interface directly

- Deprecated Classes
  Class
  Description
  org.apache.cayenne.access.translator.batch.legacy.DefaultBatchTranslator
  since 4.2
  org.apache.cayenne.BaseContext
  since 5.0, use `DataContext` directly
  org.apache.cayenne.BaseDataObject
  since 5.0, use `PersistentObject` directly
  org.apache.cayenne.configuration.runtime.JNDIDataSourceFactory
  unused by Cayenne
  org.apache.cayenne.configuration.server.ServerRuntime
  since 5.0, use `CayenneRuntime` class instead
  org.apache.cayenne.dba.PerAdapterProvider
  unused, it is trivial to create per-adapter classes without the common superclass
  org.apache.cayenne.exp.TraversalHelper
  since 5.0 as `TraversalHandler` has default no-op implementations for all methods
  org.apache.cayenne.util.DeepMergeOperation
  unused
  org.apache.cayenne.util.EqualsBuilder
  Use `Objects.equals(Object, Object)` or `Objects.deepEquals(Object, Object)` directly.
  org.apache.cayenne.util.HashCodeBuilder
  use `Objects.hash(Object...)` or a manual `31 * h + Objects.hashCode(x)` loop

- Deprecated Annotation Interfaces
  Annotation Interface
  Description
  org.apache.cayenne.commitlog.CommitLog
  use `CommitLog` instead.

- Deprecated Fields
  Field
  Description
  org.apache.cayenne.access.DataContext.threadObjectContext
  org.apache.cayenne.configuration.Constants.SERVER_ADAPTER_DETECTORS_LIST
  since 5.0, use `Constants.ADAPTER_DETECTORS_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_CONTEXTS_SYNC_PROPERTY
  since 5.0, use `Constants.CONTEXTS_SYNC_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_DEFAULT_TYPES_LIST
  since 5.0, use `Constants.DEFAULT_TYPES_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_DOMAIN_LISTENERS_LIST
  since 5.0, use `Constants.DOMAIN_LISTENERS_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_DOMAIN_NAME_PROPERTY
  since 5.0, use `Constants.DOMAIN_NAME_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_EXTERNAL_TX_PROPERTY
  since 5.0, use `Constants.EXTERNAL_TX_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY
  since 5.0, use `Constants.MAX_ID_QUALIFIER_SIZE_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_OBJECT_RETAIN_STRATEGY_PROPERTY
  since 5.0, use `Constants.CONTEXTS_SYNC_PROPERTY`
  org.apache.cayenne.configuration.Constants.SERVER_PROJECT_LOCATIONS_LIST
  since 5.0, use `Constants.PROJECT_LOCATIONS_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_RESOURCE_LOCATOR
  since 5.0, use `Constants.RESOURCE_LOCATOR`
  org.apache.cayenne.configuration.Constants.SERVER_TYPE_FACTORIES_LIST
  since 5.0, use `Constants.TYPE_FACTORIES_LIST`
  org.apache.cayenne.configuration.Constants.SERVER_USER_TYPES_LIST
  since 5.0, use `Constants.USER_TYPES_LIST`
  org.apache.cayenne.configuration.xml.ObjRelationshipHandler.DB_RELATIONSHIP_REF_TAG

- Deprecated Methods
  Method
  Description
  org.apache.cayenne.access.DataContext.bindThreadObjectContext(ObjectContext)
  if you are using thread context, you can create your own ThreadLocal
  org.apache.cayenne.access.DataContext.getThreadObjectContext()
  if you are using thread context, you can create your own ThreadLocal
  org.apache.cayenne.access.DataContext.setTransactionFactory(TransactionFactory)
  since 4.0 avoid using this directly. Transaction management at this level will be eventually removed
  org.apache.cayenne.access.DataDomain.initWithProperties(Map<String, String>)
  since 4.0 properties are processed by the DI provider.
  org.apache.cayenne.access.DataDomain.performQueries(Collection<? extends Query>, OperationObserver)
  use `DataDomain.onQuery(ObjectContext, Query)` instead.
  org.apache.cayenne.access.DataNode.lookupDataNode(DataMap)
  unused and unneeded
  org.apache.cayenne.access.IncrementalFaultList.fillIn(Query, List<Object>)
  since 5.0, does nothing
  org.apache.cayenne.cache.NestedQueryCache.clear()
  since 4.0
  org.apache.cayenne.cache.QueryCache.clear()
  since 4.0. Please use implementation specific methods to perform cache management tasks.
  org.apache.cayenne.configuration.runtime.CoreModule.contributeAdapterDetectors(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeDefaultTypes(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeDomainListeners(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeDomainQueryFilters(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeDomainSyncFilters(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributePkGenerators(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeProjectLocations(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeProperties(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeTypeFactories(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeUserTypes(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.contributeValueObjectTypes(Binder)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.setSnapshotCacheSize(Binder, int)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.runtime.CoreModule.useExternalTransactions(Binder, boolean)
  in favor of `CoreModule.extend(Binder)` API
  org.apache.cayenne.configuration.server.ServerRuntime.builder()
  since 5.0, use `CayenneRuntime.builder()` instead
  org.apache.cayenne.configuration.server.ServerRuntime.builder(String)
  since 5.0, use `CayenneRuntime.builder(String)` instead
  org.apache.cayenne.ejbql.parser.JavaCharStream.getColumn()
  org.apache.cayenne.ejbql.parser.JavaCharStream.getLine()
  org.apache.cayenne.exp.parser.JavaCharStream.getColumn()
  org.apache.cayenne.exp.parser.JavaCharStream.getLine()
  org.apache.cayenne.exp.property.CollectionProperty.contains(Collection<V>)
  since 5.0 in favour of `CollectionProperty.containsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.CollectionProperty.contains(V)
  since 5.0 in favour of `CollectionProperty.containsValue(V)`
  org.apache.cayenne.exp.property.CollectionProperty.contains(V, V...)
  since 5.0 in favour of `CollectionProperty.containsValues(V...)`
  org.apache.cayenne.exp.property.CollectionProperty.containsId(Object, Object...)
  since 5.0 in favour of `CollectionProperty.containsIds(Object...)`
  org.apache.cayenne.exp.property.CollectionProperty.containsId(Collection<Object>)
  since 5.0 in favour of `CollectionProperty.containsIdsCollection(Collection)`
  org.apache.cayenne.exp.property.CollectionProperty.notContains(Collection<V>)
  since 5.0 in favour of `CollectionProperty.notContainsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.CollectionProperty.notContains(V)
  since 5.0 in favour of `CollectionProperty.notContainsValue(V)`
  org.apache.cayenne.exp.property.CollectionProperty.notContains(V, V...)
  since 5.0 in favour of `CollectionProperty.notContainsValues(V...)`
  org.apache.cayenne.exp.property.CollectionProperty.notContainsId(Object, Object...)
  since 5.0 in favour of `CollectionProperty.notContainsIds(Object...)`
  org.apache.cayenne.exp.property.CollectionProperty.notContainsId(Collection<Object>)
  since 5.0 in favour of `CollectionProperty.notContainsIdsCollection(Collection)`
  org.apache.cayenne.exp.property.EntityProperty.inId(Object, Object...)
  since 5.0 in favour of `EntityProperty.idsIn(Object...)`
  org.apache.cayenne.exp.property.EntityProperty.inId(Collection<Object>)
  since 5.0 in favour of `EntityProperty.idsInCollection(Collection)`
  org.apache.cayenne.exp.property.EntityProperty.ninId(Object, Object...)
  since 5.0 in favour of `EntityProperty.idsNotIn(Object...)`
  org.apache.cayenne.exp.property.EntityProperty.ninId(Collection<Object>)
  since 5.0 in favour of `EntityProperty.idsNotInCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.contains(Collection<V>)
  since 5.0 in favour of `MapProperty.containsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.contains(V, V...)
  since 5.0 in favour of `MapProperty.containsValues(V...)`
  org.apache.cayenne.exp.property.MapProperty.containsId(Object, Object...)
  since 5.0 in favour of `MapProperty.containsIds(Object...)`
  org.apache.cayenne.exp.property.MapProperty.containsId(Collection<Object>)
  since 5.0 in favour of `MapProperty.containsIdsCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.notContains(Collection<V>)
  since 5.0 in favour of `MapProperty.notContainsValuesCollection(Collection)`
  org.apache.cayenne.exp.property.MapProperty.notContains(V, V...)
  since 5.0 in favour of `MapProperty.notContainsValues(V...)`
  org.apache.cayenne.exp.property.MapProperty.notContainsId(Object, Object...)
  since 5.0 in favour of `MapProperty.notContainsIds(Object...)`
  org.apache.cayenne.exp.property.MapProperty.notContainsId(Collection<Object>)
  since 5.0 in favour of `MapProperty.notContainsIdsCollection(Collection)`
  org.apache.cayenne.map.ObjRelationship.recalculateReadOnlyValue()
  since 4.2
  org.apache.cayenne.query.QueryRouter.engineForDataMap(DataMap)
  renamed to `QueryRouter.nodeForDataMap(DataMap)`.
  org.apache.cayenne.query.QueryRouter.engineForName(String)
  renamed to `QueryRouter.nodeForName(String)`.
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Object)
  since 5.0, use `SelectById.dataRowQueryId(Class, Object)`
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Object, Object...)
  since 5.0, use `SelectById.dataRowQueryIds(Class, Object...)`
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Map<String, ?>)
  since 5.0, use `SelectById.dataRowQueryMap(Class, Map)`
  org.apache.cayenne.query.SelectById.dataRowQuery(Class<?>, Map<String, ?>, Map<String, ?>...)
  since 5.0, use `SelectById.dataRowQueryMaps(Class, Map[])`
  org.apache.cayenne.query.SelectById.dataRowQuery(ObjectId)
  since 5.0, use `SelectById.dataRowQueryObjectId(ObjectId)`
  org.apache.cayenne.query.SelectById.dataRowQuery(ObjectId, ObjectId...)
  since 5.0, use `SelectById.dataRowQueryObjectIds(ObjectId...)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Object)
  since 5.0, use `SelectById.queryId(Class, Object)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Object, Object...)
  since 5.0, use `SelectById.queryIds(Class, Object...)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Collection<Object>)
  since 5.0, use `SelectById.queryIdsCollection(Class, Collection)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Map<String, ?>)
  since 5.0, use `SelectById.queryMap(Class, Map)`
  org.apache.cayenne.query.SelectById.query(Class<T>, Map<String, ?>, Map<String, ?>...)
  since 5.0, use `SelectById.queryMaps(Class, Map[])`
  org.apache.cayenne.query.SelectById.query(Class<T>, ObjectId)
  since 5.0, use `SelectById.queryObjectId(Class, ObjectId)`
  org.apache.cayenne.query.SelectById.query(Class<T>, ObjectId, ObjectId...)
  since 5.0, use `SelectById.queryObjectIds(Class, ObjectId...)`
  org.apache.cayenne.reflect.ClassDescriptor.getSubclassDescriptor(Class<?>)
  since 5.0, will throw UnsupportedOperationException on invocation, use `ClassDescriptor.getSubclassDescriptor(String)`
  org.apache.cayenne.util.Util.getJavaClass(String)
  since 4.0 this method based on statically defined class loading algorithm is not going to work in environments like OSGi. `AdhocObjectFactory` should be used as it can provide the environment-specific class loading policy.
  org.apache.cayenne.util.Util.hashCode(Collection<?>)
  unused
  org.apache.cayenne.util.Util.isNumeric(CharSequence)
  use `cs.chars().allMatch(Character::isDigit)` or equivalent
  org.apache.cayenne.util.Util.join(Iterable<?>, String)
  use `String.join(CharSequence, CharSequence...)` or `Collectors.joining()`
  org.apache.cayenne.util.Util.nullSafeEquals(Object, Object)
  Use `Objects.equals(Object, Object)` for non-array types, or `Objects.deepEquals(Object, Object)` when the values may be arrays.
  org.apache.cayenne.util.Util.sortedIterator(Iterator<T>, Comparator<T>)
  unused
  org.apache.cayenne.util.Util.toMap(K[], V[])
  use `IntStream.range(int, int)` with `Collectors.toMap(Function, Function)` to build a map from parallel arrays

- Deprecated Constructors
  Constructor
  Description
  org.apache.cayenne.access.DataDomain(String, Map<String, String>)
  since 4.0 unused
  org.apache.cayenne.query.RefreshQuery()
  since 4.0, "refresh all" query will drop all cache contents