【问题标题】:ERROR org.grails.orm.hibernate.cfg.HibernateMappingBuilder - ORM Mapping Invalid and others错误 org.grails.orm.hibernate.cfg.HibernateMappingBuilder - ORM 映射无效等
【发布时间】:2016-03-02 15:37:30
【问题描述】:

在 3.1.2 的 grails 上运行在 2.2.2 中创建的应用程序并收到很多错误。我是 grails 新手,对出现的错误感到非常困惑。

ERROR org.grails.orm.hibernate.cfg.HibernateMappingBuilder - ORM Mapping Invalid: Specified config option [permissions] does not exist for class [class.User]!

org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - StandardWrapper.Throwable
java.lang.NoClassDefFoundError: org/apache/jasper/runtime/JspFactoryImpl

Caused by: java.lang.ClassNotFoundException: org.apache.jasper.runtime.JspFactoryImpl
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_65]

ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Servlet [jsp] in web application [] threw load() exception
java.lang.ClassNotFoundException: org.apache.jasper.runtime.JspFactoryImpl

这些都是零碎的,整个错误信息很长

user.groovy

import org.apache.commons.codec.digest.DigestUtils;

class User {
    String username
    String password
    String permissions
    String firstName
    String lastName
    String email
    String department

    static hasMany = [updates: Update]

    static constraints = {
        username (blank:false)
        password (blank:false)
        firstName (blank:false)
        lastName (blank:false)
        permissions()
        email()
        department()
    }

    String toString() {
        username
    }

    static String hashPassword(String password) {
        DigestUtils.shaHex(password)
    }
}

【问题讨论】:

    标签: java hibernate grails orm


    【解决方案1】:

    您不能在另一个版本的 Grails 上运行在一个版本中创建的应用程序。 Grails 非常在使用正确的版本。要在 3.1.2 上运行该 2.2.3 应用程序,您需要升级该应用程序以使用 3.1.2。见https://grails.github.io/grails-doc/latest/guide/upgrading.html

    【讨论】:

    • 您必须选择:将应用程序升级到 Grails 3.1.2,或者保持原样并使用 Grails 2.2.2 运行它。后者是启动和运行它的最快方法。俗话说,你不能有你的蛋糕也吃它
    • 我试过了,这比迁移要糟糕得多。例如错误 java.lang.reflect.InvocationTargetExceptionm.JVM copyField | sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)出错 |错误原因:java.lang.NullPointerException:无法在 null 对象上调用方法 getAt() | grails.util.BuildSettings.configureDependencyManager 出错(BuildSettings.groovy:1257)
    • 严重:复制字段时出现问题。不兼容的JVM? sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 处的 java.lang.reflect.InvocationTargetException - 原因:java.lang.IllegalArgumentException:无法在 java.lang.reflect.Field.copy(Field. java:148)
    • 肯定有些不正常。如果您创建一个全新的虚拟 Grails 2.2.2 应用程序,其中除了默认值之外什么都没有,它会成功运行吗?
    • 就是这样,那个错误出来时没有任何内容,这只是我下载的基本文件
    【解决方案2】:

    ORM 映射无效:指定的配置选项 [权限] 没有 存在于类 [class.User]

    这意味着你正在尝试调用class.User的参数permissions不存在。

    【讨论】:

    • 但它确实存在,静态约束 = { 用户名空白:假密码空白:假名字空白:假姓氏空白:假权限()电子邮件()部门()}
    • 这些只是约束。请在您的问题中添加完整的域类class.User 代码。
    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多