Префикс имен столбцов в GORM - PullRequest
3 голосов
/ 05 октября 2011

в каждом проекте я автоматически сталкиваюсь с проблемой зарезервированного слова SQL, когда использую свойства типа status или user в моих классах домена Grails.

Поэтому мне всегда нужно добавлять

static mapping = {
    status column:'prefix_status'
}

для моих классов.

Теперь я задаюсь вопросом, есть ли простой способ поставить префикс для всех столбцов с заданной строкой?

Если из коробки ничего нет,Я предполагаю, что было бы возможно создать плагин, который автоматически внедрит такое отображение во все классы домена - может кто-то указать мне на пример кода, который изменяет класс всякий раз, когда он изменяется?

1 Ответ

8 голосов
/ 05 октября 2011

На это уже ответили в руководстве:

реляционное сопоставление объектов (GORM) - пользовательская стратегия именования

Добавить в DataSource.groovy Конфиг:

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

Пользовательский класс именования (под 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)
    }
}
...