# type

## Purpose

Configures the Hibernate type for a particular property.

## Examples

Changing to a text type (CLOB or TEXT depending on database dialect).

    class Book {
        String title
        static mapping = {
            title type:"text"
        }
    }

User types with multiple columns:

    class Book {
        …
        MonetaryAmount amount    static mapping =  {
            amount type: MonetaryUserType, {
                column name: "value"
                column name: "currency", sqlType: "char", length: 3
            }
        }
    }

## Description

Usage: `association_name(type:string/class)`

Hibernate will attempt to automatically select the appropriate type based from a properties `java.lang.Class`. However, this choice is not always appropriate. For example `String` values are by default mapped to `varchar(255)` columns. If you want to store larger `String` values you can use a `text` type instead:

    static mapping = {
        title type:"text"
    }

Hibernate also has the concept of custom `UserType` implementations. In this case you need to specify the `UserType` class. If the `UserType` maps to multiple columns you may need to specify mapping for each column:

    static mapping =  {
        amount type: MonetaryUserType, {
            column name: "value"
            column name: "currency", sqlType: "char", length: 3
        }
    }