sqlite translation
Every SQLite table has at least one column: A column named p
, which
stores the persistent object translated into JSON. If the
write timestamps configuration is
turned on, then created_timestamp
and modified_timestamp
columns
are added. If optimistic locking is turned
on, then a row_version
column is also added.
More columns are added to support any keys or
indexes for the persistent type.
Every property used in a key or index is
expanded in to a sequence of property components that all have basic
types. These property components are stored in
columns, and all have names prefixed with prop_
.
The property components that make up your primary key are included in
a PRIMARY KEY
clause in the CREATE TABLE
statement. If you do not
define a primaryKey
for your PType
, longevity will create a column
named id
, of type text
, and use that as the primary key. The
primary key values will be random UUID values as generated by
java.util.UUID.randomUUID()
.
All your non-primary keys and indexes will be backed by SQLite indexes, built up from the property components described above. The indexes for non-primary keys will be unique, and the SQLite indexes for longevity indexes will be non-unique.
The property component columns are used to back calls to Repo.retrieve, as well as query retrievals. Please note that queries constructed using properties that are not part of a longevity key or index will fail.
SQLite table names are generated by underscoring the camel-cased name of the persistent class.