我需要添加一些作为系统架构设计一部分的函数和视图。这应该是会话启动的一部分(尤其是在开发和测试中),因为数据源上的 dbCreate create-drop 设置使得初始开发和测试环境最初设置一致且原始。
使用数据库迁移插件没有意义,因为这些是预定义的 db 对象,它们是整个系统设计的一部分,除非它们本身正在更改,否则它们不属于更改集。相当于要求我们在变更集中添加域表生成sql。如果它正在发生变化(这就是变更集的用途!),这是有道理的,但如果它只是最初创建的,那么它在概念上放置它的位置是错误的。
此外,我们不能使用迁移插件,因为我们的生产 QA 流程不允许这种方法(它是与项目源无关的外部流程,因此在多个项目中维护更改集没有意义)。
Hibernate 从 grails 域对象自动生成它的模式,我们有视图的 sql(依赖于域对象中的表)以及这些视图中使用的一些函数的 sql,我们只需要确定在哪里最好让 GORM / Hibernate 执行所述 sql,以便在生成模式时生成适当的 db 对象。
在 Grails 2.5.5 中,我使用自定义 GrailsAnnotationConfiguration 来挂钩模式生成过程。这不再是在 grails 4+ 中使用 Hibernate 5 的选项。
为了在不依赖数据库迁移插件的情况下添加自定义数据库对象(如函数和视图),与 Hibernate Schema 生成过程相关联的最佳方法是什么?