# id

## Purpose

Customizes the way to identifier for a domain class is generated

## Examples

    class Book {
        static mapping = {
            id generator:'hilo', params:[table:'hi_value',column:'next_value',max_lo:100]
        }
    }

## Description

Usage: `id(map)`

Arguments:

- `generator` (optional) - The name of the generator to use. Can be `increment`, `identity`, `sequence`, `hilo`, `seqhilo`, `uuid`, `guid`, `native`, `assigned`, `select`, `foreign` or `sequence-identity`. See Hibernate reference documentation for more information.
- `composite` (optional) - Takes a list of property names to use that form the composite identifier
- `name` (optional) - The property name to use as the identifier
- `params` (optional) - Any parameters to pass to the defined identity generator
- `column` (optional) - The column name to map the identifier to. The remaining column definition properties are also available.

By default GORM uses the native strategy to generate a database identifier for each entity. You can alter this with the `id` methods `generator` argument:

    static mapping = {
        id generator:'hilo', params:[table:'hi_value',column:'next_value',max_lo:100]
    }

You can also use the same method to define a composite identifier:

    static mapping = {
        id composite:['title', 'author']
    }

Or change the name of the property that defines the identifier:

    static mapping = {
        id name:'title'
    }

You can also alter the column definition:

    static mapping = {
        id column:'book_id', type:'integer'
    }

See the section on Custom Database Identity in the user guide for more information.