如果我有一个Grails应用程序,该应用程序曾用于将一些域对象持久保存到数据库中(在这种情况下为MongoDb,但可能没有关系),并且我修改了域类,请说我添加了更多属性或删除了一些属性。现在,具有较新版本域类的应用程序的修改版本是否仍可以识别已经持久存在的域实例旧版本?
更重要的是,如果我现在使用新版本的域类重新启动Grails应用程序,它将删除(或采取任何措施)已经持久化的旧版本的域对象吗? 我正在尝试追寻我面临的类似问题,但是我在一个团队中,所以我不确定该应用程序是否从db中删除了旧对象(我认为不是)还是有人系统用户删除了。
最佳答案
Grails处理数据库的方式取决于DataSource.groovy中dbCreate属性的值。
如果您声明
dataSource {
dbCreate = "update"
}
那么您添加到域类中的所有其他属性将作为列添加到数据库中。请注意,这不会删除任何已经存在的列。假设您有一个名为x的属性,并想将其替换为名为y的属性,这将在数据库中创建一个y列,但x列仍将保留。
这里是dbCreate的可能值和行为的列表
希望这可以帮助
关于mongodb - Grails和MongoDb(永久实例删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26867378/