如何解决Objectbox-go:删除模型类
不幸的是,ObjectBox Go的文档没有提供有关删除由ObjectBox支持的整个类型结构的信息。
假设我们有一个结构
//go:generate go run github.com/objectBox/objectBox-go/cmd/objectBox-gogen
type Test struct {
Id uint64
Name string
}
一段时间后,我决定从项目中删除整个Test(删除了test.go和test.obx.go)。不幸的是,go generate仍然“记住”了这个幻影类,并一直将其添加到objectBox-model.go
model.RegisterBinding(TestBinding)
如何安全删除此结构(及其数据)?
解决方法
当前,ObjectBox代码生成器不会删除实体,因为它可以处理部分输入信息(一次只有一个文件),因此它不知道您是否已删除实体,或者它是否在下一个文件中需要生成器。
我已经在GH上创建了后续问题/功能请求:https://github.com/objectbox/objectbox-generator/issues/22
如果您确实需要立即删除实体,直到将删除功能添加到生成器之前:当前的解决方法是手动更新objectbox-model.json
,删除定义它的实体JSON代码块并添加其uid
到retiredEntityUids
列表中,以避免重复使用相同的UID(这会造成问题)。另外,必须对删除的属性,索引和关系执行相同的操作(每个属性都有其retired*Uids
列表)。重新运行生成器后,该实体将从objectbox-model.go
中删除。
我不建议您这样做,因为手动编辑模型JSON文件时很容易出错,可能会导致数据丢失。如果可以,请等待生成器支持删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。