在通过教程开始学习 Grails 时,我犯了一个错误并运行:
grails create-domain-class com.FooBar
代替:
grails create-domain-class com.acme.FooBar
很明显我犯了一个错误,所以我尝试了以下方法:
- 搜索了一个反转 create-domain-class 命令的函数,似乎没有。
- 在网上搜索了建议,一致认为您可以删除域类文件、任何关联的视图和测试,然后为了安全起见,在项目目录中对您的类名进行文本搜索,以查找您可能错过的任何参考。我已经完成了这一切。
- 然后我运行了正确的命令来创建 com.acme.FooBar,它起作用了。
在此之后,应用程序无法运行并报告以下错误:
org.hibernate.DuplicateMappingException: duplicate import: FooBar refers to both com.acme.FooBar and com.FooBar (try using auto-import="false")
将以下代码添加到 com.acme.FooBar 后:
...
static mapping = {
autoImport false
}
...
该应用程序现在按预期运行。
然而,作为一个偶尔会重构包的经验丰富的 Java 开发人员,我想了解如何在不导致 DuplicateMappingException 或诉诸“autoImport false”解决方案的情况下做到这一点。
谢谢。