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