PkGenerator (cayenne-doc: Cayenne Documentation 5.0-M2 API)
Description: declaration: package: org.apache.cayenne.dba, interface: PkGenerator

# Interface PkGenerator

All Known Implementing Classes:
  `DB2PkGenerator, DerbyPkGenerator, FrontBasePkGenerator, H2PkGenerator, IngresPkGenerator, JdbcPkGenerator, MySQLPkGenerator, OraclePkGenerator, PostgresPkGenerator, SQLServerPkGenerator, SybasePkGenerator`

public interface PkGenerator
Defines methods to support automatic primary key generation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `createAutoPk(DataNode node, List<DbEntity> dbEntities)`
  Generates necessary database objects to provide automatic primary key support.
  `List<String>`
  `createAutoPkStatements(List<DbEntity> dbEntities)`
  Returns a list of SQL strings needed to generates database objects to provide automatic primary support for the list of entities.
  `void`
  `dropAutoPk(DataNode node, List<DbEntity> dbEntities)`
  Drops any common database objects associated with automatic primary key generation process.
  `List<String>`
  `dropAutoPkStatements(List<DbEntity> dbEntities)`
  Returns SQL string needed to drop database objects associated with automatic primary key generation.
  `Object`
  `generatePk(DataNode dataNode, DbAttribute pk)`
  Generates a unique and non-repeating primary key for specified PK attribute.
  `DbAdapter`
  `getAdapter()`
  Get an adapter associated with current PkGenerator
  `void`
  `reset()`
  Resets any cached primary keys forcing generator to go to the database next time id generation is requested.
  `void`
  `setAdapter(DbAdapter q)`
  Install the adapter associated with current PkGenerator

- ## Method Details

  - ### createAutoPk

    void createAutoPk(DataNode node, List<DbEntity> dbEntities) throws Exception
    Generates necessary database objects to provide automatic primary key support.
    Parameters:
      `node` - node that provides access to a DataSource.
      `dbEntities` - a list of entities that require primary key auto-generation support
    Throws:
      `Exception`

  - ### createAutoPkStatements

    List<String> createAutoPkStatements(List<DbEntity> dbEntities)
    Returns a list of SQL strings needed to generates database objects to provide automatic primary support for the list of entities. No actual database operations are performed.

  - ### dropAutoPk

    void dropAutoPk(DataNode node, List<DbEntity> dbEntities) throws Exception
    Drops any common database objects associated with automatic primary key generation process. This may be lookup tables, special stored procedures or sequences.
    Parameters:
      `node` - node that provides access to a DataSource.
      `dbEntities` - a list of entities whose primary key auto-generation support should be dropped.
    Throws:
      `Exception`

  - ### dropAutoPkStatements

    List<String> dropAutoPkStatements(List<DbEntity> dbEntities)
    Returns SQL string needed to drop database objects associated with automatic primary key generation. No actual database operations are performed.

  - ### generatePk

    Object generatePk(DataNode dataNode, DbAttribute pk) throws Exception
    Generates a unique and non-repeating primary key for specified PK attribute.
    Throws:
      `Exception`
    Since:
      3.0

  - ### setAdapter

    void setAdapter(DbAdapter q)
    Install the adapter associated with current PkGenerator
    Since:
      4.1

  - ### getAdapter

    DbAdapter getAdapter()
    Get an adapter associated with current PkGenerator
    Since:
      4.1

  - ### reset

    void reset()
    Resets any cached primary keys forcing generator to go to the database next time id generation is requested. May not be applicable for all generator implementations.