GORM(Hibernate)尝试映射非域类;给出DuplicateMappingException

时间:2013-05-19 09:59:08

标签: grails gorm grails-plugin shiro grails-2.2

我正在从2.1.0版本升级我的Grails应用程序。在此升级之前,应用程序运行良好。我下载并设置了新版本的Grails(最初我尝试了2.2.1版,但今天尝试进入2.2.2版)并在我的应用程序上进行了Grails升级。

由于该升级,我的应用程序无法启动,引用了DuplicateMappingException。

DuplicateMappingException: duplicate import: User refers to both com.mycompany.myapp.User and net.security.User (try using auto-import="false")

DuplicateMappingException: duplicate import: Role refers to both net.security.Role and com.mycompany.myapp.Role (try using auto-import="false")

所以在我看来GORM出于某种原因认为需要将这些net.security类映射到数据库。

RoleUser是我用于Grails的Shiro安全插件的域类。

我尝试将autoImport false添加到我的域类中的映射块。这会导致系统中使用UserRole的其他部分出现问题。我没有进一步追求这一点,因为我确信这里不应该有冲突。

所以我在寻找是否有人知道可能导致这种情况的原因,或者我可能尝试修复它的一些事情。

仅供参考我在该项目上尝试过Grails clean。

由于

1 个答案:

答案 0 :(得分:0)

好的,问题是net.security类不像我想的那样是随机类。 net.security是Shiro OpenID插件类的默认包。所以在项目早期,我们使用自己的包添加了UserRole类,而不是使用Shiro OpenID插件附带的类。此时,我们必须从grails-app目录中的src/groovy/net/security.grails/<version>/projects/<project>/plugins/shiro-openid-0.5目录中删除相应的类。当我升级到Grails 2.2.2时,插件重新创建了这些文件,它们与我们项目中的文件冲突。

现在我手动删除了这些类文件,但也许有办法在BuildConfig.groovy中自动删除它们?这是另一天的问题。