public class OraclePkGenerator extends JdbcPkGenerator
When using Cayenne key caching mechanism, make sure that sequences in the database have "INCREMENT BY" greater or equal to OraclePkGenerator "pkCacheSize" property value. If this is not the case, you will need to adjust PkGenerator value accordingly. For example when sequence is incremented by 1 each time, use the following code:
dataNode.getAdapter().getPkGenerator().setPkCacheSize(1);
adapter, DEFAULT_PK_CACHE_SIZE, pkCache, pkCacheSize, pkStartValue
Modifier | Constructor and Description |
---|---|
protected |
OraclePkGenerator(JdbcAdapter adapter) |
Modifier and Type | Method and Description |
---|---|
void |
createAutoPk(DataNode node,
List dbEntities)
Generates necessary database objects to provide automatic primary key support.
|
List |
createAutoPkStatements(List dbEntities)
Returns a list of SQL strings needed to generates database objects to provide
automatic primary support for the list of entities.
|
protected String |
createSequenceString(DbEntity ent) |
void |
dropAutoPk(DataNode node,
List dbEntities)
Drops table named "AUTO_PK_SUPPORT" if it exists in the database.
|
List |
dropAutoPkStatements(List dbEntities)
Returns SQL string needed to drop database objects associated with automatic
primary key generation.
|
protected String |
dropSequenceString(DbEntity ent)
Returns a SQL string needed to drop any database objects associated with
automatic primary key generation process for a specific DbEntity.
|
protected List |
getExistingSequences(DataNode node)
Fetches a list of existing sequences that might match Cayenne generated
ones.
|
protected long |
longPkFromDatabase(DataNode node,
DbEntity entity)
Generates primary key by calling Oracle sequence corresponding to the
dbEntity . |
protected int |
pkCacheSize(DbEntity entity) |
protected String |
sequenceName(DbEntity entity)
Returns expected primary key sequence name for a DbEntity.
|
protected String |
stripSchemaName(String sequenceName) |
autoPkTableExists, dropAutoPkString, generatePk, getAdapter, getPkCacheSize, pkCreateString, pkDeleteString, pkSelectString, pkTableCreateString, pkUpdateString, reset, runUpdate, setPkCacheSize
protected OraclePkGenerator(JdbcAdapter adapter)
public void createAutoPk(DataNode node, List dbEntities) throws Exception
PkGenerator
createAutoPk
in interface PkGenerator
createAutoPk
in class JdbcPkGenerator
node
- node that provides access to a DataSource.dbEntities
- a list of entities that require primary key auto-generation
supportException
public List createAutoPkStatements(List dbEntities)
PkGenerator
createAutoPkStatements
in interface PkGenerator
createAutoPkStatements
in class JdbcPkGenerator
public void dropAutoPk(DataNode node, List dbEntities) throws Exception
JdbcPkGenerator
dropAutoPk
in interface PkGenerator
dropAutoPk
in class JdbcPkGenerator
node
- node that provides access to a DataSource.dbEntities
- a list of entities whose primary key auto-generation support
should be dropped.Exception
public List dropAutoPkStatements(List dbEntities)
PkGenerator
dropAutoPkStatements
in interface PkGenerator
dropAutoPkStatements
in class JdbcPkGenerator
protected String dropSequenceString(DbEntity ent)
protected long longPkFromDatabase(DataNode node, DbEntity entity) throws Exception
dbEntity
. Executed SQL looks like this:
SELECT pk_table_name.nextval FROM DUAL
longPkFromDatabase
in class JdbcPkGenerator
Exception
protected int pkCacheSize(DbEntity entity)
protected String sequenceName(DbEntity entity)
protected List getExistingSequences(DataNode node) throws SQLException
SQLException
Copyright © 2001–2015 Apache Cayenne. All rights reserved.