Datastore Feature Support

Whilst we aim to ultimately support all API features on all supported datastores, this isn't currently possible. See below for a summary of what feature is supported on which datastore. .

Feature
General Features
Datastore Identity
Application Identity
Nondurable Identity [1]
Composite Identity
Nontransactional
ACID Transactions
Versioned objects
Optimistic Checks
Fetch Plan control
Native Connection access (JDO)
Encryption of data [7]
Backed object wrappers [2]
Cascade Persist
Cascade Update
Cascade Delete
Schema Evolution - New fields [3]
Value Generation
native(JDO)/auto(JPA)
increment(JDO)/table(JPA)
identity(JDO/JPA)
sequence(JDO/JPA)
uuid-hex(JDO)
uuid-string(JDO)
uuid
timestamp
timestamp-value
max
O/R Mapping
Indexes
Unique Keys
Foreign Keys
Primary Keys
Inheritance(complete-table) [4]
Inheritance(new-table)
Inheritance(subclass-table)
Inheritance(superclass-table)
Discriminators
Secondary Tables
Join Tables
Embedded PC
Embedded PC stored nested ([8])
Embedded Collection
Embedded Map
Embedded Array
Serialised PC
Serialised Collection
Serialised Map
1-1
1-N
M-N
SchemaTool
Multitenancy by discriminator
Field Types
Primitives, Wrappers
java.lang.String etc
java.lang.Enum
java.util.Date etc
java.lang.Object
java.io.Serializable
java.util.Collection
java.util.Map
Arrays
Interfaces
Type Converters
Type Converter : auto-apply
Type Converter : multicolumn
Queries
JDOQL evaluated in memory
JDOQL evaluated in datastore [5]
JDOQL of candidate interface
JDOQL Polymorphic queries
JPQL evaluated in memory
JPQL evaluated in datastore [5]
SQL [6]
Stored Procedures
JDOQL Bulk Update
JDOQL Bulk Delete
JPQL Bulk Update
JPQL Bulk Delete

[1] represents partial implementation.
[2] - when a collection/map/array is "backed" it can put individual elements in the datastore at once rather than writing everything, and additionally can control how the elements are retrieved
[3] represents partial implementation.
[4] means that datastore doesn't explicitly support inheritance but "complete-table" is the nearest to what happens.
[5] means partially evaluated in datastore and remains evaluated in memory.
[6] means supports some SQL syntax.
[7] Using Cumulus4j plugin for DataNucleus
[8] The embedded object is stored nested in the datastore under the owner object