rdmueller
rdmueller

Reputation: 11062

Prefix column names in GORM

with every project, I automatically run into a problem with reserved SQL word when I use properties like status or user in my Grails domain classes.

So I always have to add a

static mapping = {
    status column:'prefix_status'
}

to my classes.

I now wonder if there is an easy way to prefix all columns with a given string?

If there is nothing out of the box, I guess it would be possible to create a plugin which automagically injects such a mapping in all domain classes - can someone point me to a code example which modifies a class whenever it changes?

Upvotes: 3

Views: 1106

Answers (1)

OverZealous
OverZealous

Reputation: 39580

This is already answered in the manual:

Object Relational Mapping (GORM) - Custom Naming Strategy

Add to DataSource.groovy Config:

hibernate {
    ...
    naming_strategy = com.myco.myproj.CustomNamingStrategy
}

Custom Naming Class (under src/groovy/com/myco/myproj/CustomNamingStrategy.groovy):

package com.myco.myproj

import org.hibernate.cfg.ImprovedNamingStrategy
import org.hibernate.util.StringHelper

class CustomNamingStrategy extends ImprovedNamingStrategy {

    String propertyToColumnName(String propertyName) {
        "prefix_" + StringHelper.unqualify(propertyName)
    }
}

Upvotes: 8

Related Questions