【问题标题】:GORM (Hibernate) tries to map non-domain classes; gives DuplicateMappingExceptionGORM (Hibernate) 尝试映射非域类;给出 DuplicateMappingException
【发布时间】:2013-05-19 09:59:07
【问题描述】:

我正在从 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 清理。

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2018-02-24
      • 2020-04-01
      • 1970-01-01
      相关资源
      最近更新 更多