Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 即使在GORM表模式更改后,如何让系统工作?_Mysql_Sql_Hibernate_Grails_Gorm - Fatal编程技术网

Mysql 即使在GORM表模式更改后,如何让系统工作?

Mysql 即使在GORM表模式更改后,如何让系统工作?,mysql,sql,hibernate,grails,gorm,Mysql,Sql,Hibernate,Grails,Gorm,我使用GORM的目的是在数据库中的系统元数据。但是,它不希望直接使用,而是通过缓存使用。该系统的固有工作完全依赖于元数据。所以,这里所期望的是,只要数据驻留在缓存系统中,即使最终源GORM表中发生模式更改,系统也应该能够正常工作。只有当预期的数据不存在时,它才应该查询最终导致问题的数据库表。我知道这可能不是生产级系统所期望的,但我的项目目前处于开发阶段,涉及多人,在其他人不知道的情况下同时发生更改,我们不希望整个应用程序因为GORM表中的字段名更改而停止运行 如何在GORM中实现这一目标?另外,

我使用GORM的目的是在数据库中的系统元数据。但是,它不希望直接使用,而是通过缓存使用。该系统的固有工作完全依赖于元数据。所以,这里所期望的是,只要数据驻留在缓存系统中,即使最终源GORM表中发生模式更改,系统也应该能够正常工作。只有当预期的数据不存在时,它才应该查询最终导致问题的数据库表。我知道这可能不是生产级系统所期望的,但我的项目目前处于开发阶段,涉及多人,在其他人不知道的情况下同时发生更改,我们不希望整个应用程序因为GORM表中的字段名更改而停止运行

如何在GORM中实现这一目标?另外,我们怎样才能在一个地方发现任何这样的GORM问题,并将其报告给管理员或开发人员,以便编辑GORM类的映射?

哇!好主意! 对于这样的想法的是GrailsCatch插件派上了用场!您可以捕获域对象

此外,您还可以使用ecahe.plugins来支持大数据(www.bigdata.com)

让您的域成为可捕获域:

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)
}