Я разделил все мои классы домена на пространства имен и хотел бы, чтобы GORM сохранял это разделение на уровне БД с использованием префиксов таблиц.GORM: автоматически префикс каждого имени таблицы с пространством имен домена
Например:
auth.User -> auth__user
auth.Group -> auth__group
auth.Role -> auth__role
cms.Page -> cms__page
cms.Post -> cms__post
cms.Image -> cms__image
Я ищу способ сделать это без того, чтобы написать имена таблиц внутри каждого класса домена.
Я получил Hibernate, чтобы узнать пользовательскую NamingStrategy, но, увы, строка, которую я передал в classToTableName(), является только коротким именем класса; пространство имен нигде не видно.
Есть ли способ написать NamingStrategy, которая знает, что такое пространство имен классов? (possibly not)
Есть ли какие-нибудь другие автоматы Grails, которые я мог бы попробовать? Может быть, какой-то код, который можно было бы написать один раз и применить ко всем классам домена?
Я вижу, что у Grails есть настройки для плагинов grails.gorm.table.prefix.enabled
, которые некоторым пользователям удается префикс имени плагина для таблиц. Могу ли я использовать ту же технику для добавления пространства имен? Я посмотрел в источниках, но я не мог найти место, где читается и применяется grails.gorm.table.prefix.enabled
.
Вы пробовали статическое 'mapping = {table 'your_custom_name'}' в классе домена? А также вы можете создать свой собственный плагин, чтобы получить доступ к 'grails.gorm.table.prefix.enabled'. Если я правильно понял ваш вопрос. – wwarlock
Да, я мог бы написать таблицу отображения в каждом классе. Но я ищу универсальное решение написать один раз и забыть. Написание собственного плагина - это то, что я не рассматривал, но это может быть вариант, продвигающийся вперед. – Tobia
Вы можете написать свою собственную аннотацию или AST для классов домена. Но вы должны указать, что ваша аннотация/AST будет работать до grails AST. – wwarlock