Это возможно.Вы можете добавить перехватчик Hibernate для обработки всех операторов SQL и синтаксического анализа / замены некоторых токенов в имени таблицы, которое вы вводите в отображении, на фактическое имя таблицы, которое вы хотите использовать.
import org.hibernate.EmptyInterceptor
public class DynamicTableNameInterceptor extends EmptyInterceptor {
public String onPrepareStatement(String sql) {
// some kind of replacement logic here
def schema=SomeHelperClass.resolveSchema()
return sql.replaceAll('_SCHEMA_', schema)
}
}
grails-app / conf / spring / resources.groovy:
beans = {
// This is for Grails 1.3.x , in previous versions, the bean name is eventTriggeringInterceptor
entityInterceptor(DynamicTableNameInterceptor)
}