Mysql 即使在GORM表模式更改后,如何让系统工作?
我使用GORM的目的是在数据库中的系统元数据。但是,它不希望直接使用,而是通过缓存使用。该系统的固有工作完全依赖于元数据。所以,这里所期望的是,只要数据驻留在缓存系统中,即使最终源GORM表中发生模式更改,系统也应该能够正常工作。只有当预期的数据不存在时,它才应该查询最终导致问题的数据库表。我知道这可能不是生产级系统所期望的,但我的项目目前处于开发阶段,涉及多人,在其他人不知道的情况下同时发生更改,我们不希望整个应用程序因为GORM表中的字段名更改而停止运行 如何在GORM中实现这一目标?另外,我们怎样才能在一个地方发现任何这样的GORM问题,并将其报告给管理员或开发人员,以便编辑GORM类的映射?哇!好主意! 对于这样的想法的是GrailsCatch插件派上了用场!您可以捕获域对象 此外,您还可以使用ecahe.plugins来支持大数据(www.bigdata.com) 让您的域成为可捕获域:Mysql 即使在GORM表模式更改后,如何让系统工作?,mysql,sql,hibernate,grails,gorm,Mysql,Sql,Hibernate,Grails,Gorm,我使用GORM的目的是在数据库中的系统元数据。但是,它不希望直接使用,而是通过缓存使用。该系统的固有工作完全依赖于元数据。所以,这里所期望的是,只要数据驻留在缓存系统中,即使最终源GORM表中发生模式更改,系统也应该能够正常工作。只有当预期的数据不存在时,它才应该查询最终导致问题的数据库表。我知道这可能不是生产级系统所期望的,但我的项目目前处于开发阶段,涉及多人,在其他人不知道的情况下同时发生更改,我们不希望整个应用程序因为GORM表中的字段名更改而停止运行 如何在GORM中实现这一目标?另外,
class Book {
…
static mapping = { cache true }
}
class Country {
…
static mapping = { cache usage: 'read-only' }
}
class Author {
…
static hasMany = [books:Book]
static mapping = { books cache: true }
}
如果您不想破坏应用程序,通过使用来自数据库域更改的新更改覆盖捕获,您可以按如下方式进行查询:
def criteria = DomainClass.createCriteria()
def results = criteria.list {
cacheable(true)
}
还有更多…参考Birtbeckwith博客
def criteria = DomainClass.createCriteria()
def results = criteria.list {
cacheable(true)
}