gpt4 book ai didi

grails - 从域类中删除属性是否会导致模式自动更新,从而删除相应的列?

转载 作者:行者123 更新时间:2023-12-04 22:49:14 24 4
gpt4 key购买 nike

我是 Grails 的新手。我已经用过它了一点,但没有那么多。不过我对Java非常熟悉。我的问题是关于架构更新。我知道 Grails 通过查看域类来创建 Hibernate 映射,因此如果我添加一个新属性,Grails 将自动在数据库中为该属性添加一列。反过来也成立吗?如果我删除一个属性,该列是否被删除?我没有看到这种行为,所以我想知道这是否是一个配置问题。

如果我想进入更强大的数据库管理,我猜我将不得不使用数据库管理插件或类似 Liquibase 的东西。然而,我正在做的项目非常简单,目前,我们还没有决定是否朝那个方向发展。

最佳答案

这取决于您的 dbCreate设置在 DataSource.groovy .如果是 createcreate-drop然后当你重新启动时,一切都会重建。如果是 update然后添加新的表和列。如果是其他设置,则不会进行任何更改。
update并没有做大多数人所期望的。它是悲观的,不会进行可能导致数据丢失或损坏的更改。所以它不会改变列的大小,即使它更宽(例如 VARCHAR(50) -> VARCHAR(200) )。它不会添加索引。它将添加一个指定为非空的新列,但它将其添加为可为空的,否则之前插入的行将无效。但它不会删除列或表。因此,您可以轻松进入重命名列并以两个结尾的场景 - 旧的和新的。

Liquibase 是一个很棒的库和 http://grails.org/plugin/database-migration很受欢迎,因此很容易获得两者的支持。当您的架构在某种程度上稳定下来时,您应该考虑使用该插件。

关于grails - 从域类中删除属性是否会导致模式自动更新,从而删除相应的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com