# indexColumn

## Purpose

Customizes the index column definition of an indexed collection such as a `List` or `Map`

## Examples

    class Neo {
        static hasMany = [matrix:Integer]
        static mapping = {
            matrix indexColumn:[name:"the_matrix", type:Integer]
        }
    }def neo = new Neo()
    neo.matrix = [ (1): 30,
                   (2): 42,
                   (3): 23 ]
    neo.save(flush:true)

## Description

Usage: `association_name(indexColumn:map)`

Arguments:

- `name` - The name of the column as a String
- `type` (optional) - The Hibernate type.
- `sqlType` (optional) - The underlying SQL type
- `enumType` (optional) - The enum type in for type-safe Enum properties. Either `ordinal` or `string`.
- `index` (optional) - The index name
- `unique` (optional) - Whether it is unique or not
- `length` (optional) - The length of the column
- `precision` (optional) - The precision of the column
- `scale` (optional) - The scale of the column

By default when mapping an indexed collection such as a `Map` or `List` the index is stored in a column called `association_name_idx` which is an `integer` type in the case of lists and a String in the case of maps. You can alter how the index column is mapped using the `indexColumn` argument:

    static mapping = {
        matrix indexColumn:[name:"the_matrix", type:Integer]
    }