java - 由 : java. lang.ClassNotFoundException : com. mcruiseon.common.Globals.RideType 引起

标签 java enums hibernate-mapping

我的 hbm 文件入口

        <property name="rideType">
            <column name="rideType" />
            <type name="org.hibernate.type.EnumType">
                <param name="enumClass">com.mcruiseon.common.Globals.RideType</param>
                <param name="type">12</param>               
            </type>
        </property>

异常

org.hibernate.MappingException: Unable to instantiate custom type: org.hibernate.type.EnumType
    at org.hibernate.type.TypeFactory.custom(TypeFactory.java:218)
    ...
    at com.mcruiseon.server.mCruiseOnServer.main(mCruiseOnServer.java:101)
Caused by: org.hibernate.HibernateException: Enum class not found
    at org.hibernate.type.EnumType.setParameterValues(EnumType.java:239)
    at org.hibernate.type.TypeFactory.injectParameters(TypeFactory.java:131)
    ... 17 more
Caused by: java.lang.ClassNotFoundException: com.mcruiseon.common.Globals.RideType
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at org.hibernate.type.EnumType.setParameterValues(EnumType.java:236)
    ... 19 more

代码

public class Globals {
     ...whole bunch of code...
     public enum RideType {
        PER_KM("PER_KM"), PER_HOUR_1("PER_HOUR_1"), PER_HOUR_2("PER_HOUR_2"), PER_HOUR_4(
                "PER_HOUR_4"), PER_HOUR_8("PER_HOUR_8"), PER_HOUR_10(
                "PER_HOUR_10"), PER_HOUR_12("PER_HOUR_12"), PER_HOUR_16(
                "PER_HOUR_16");
        private String description;

        RideType(String description) {
            this.description = description;
        }

        public String getDescription() {
            return new String(description);
        }

        public static RideType getRideType(String value) {
            if ("PER_KM".equalsIgnoreCase(value))
                return PER_KM;
            else if ("PER_HOUR_1".equalsIgnoreCase(value))
                return PER_HOUR_1;
            else if ("PER_HOUR_2".equalsIgnoreCase(value))
                return PER_HOUR_2;
            else if ("PER_HOUR_4".equalsIgnoreCase(value))
                return PER_HOUR_4;
            else if ("PER_HOUR_8".equalsIgnoreCase(value))
                return PER_HOUR_8;
            else if ("PER_HOUR_10".equalsIgnoreCase(value))
                return PER_HOUR_10;
            else if ("PER_HOUR_12".equalsIgnoreCase(value))
                return PER_HOUR_12;
            else if ("PER_HOUR_16".equalsIgnoreCase(value))
                return PER_HOUR_16;
            return null;
        }
    };
    ...whole bunch of code...
}

我已经尝试了所有 SO 问题和答案,但出于某些疯狂的原因,它仍然抛出此异常。我在这里错过了什么?

最佳答案

这看起来像是在类中声明的枚举(内部类枚举)。如果那是真的。

改变:

<param name="enumClass">com.mcruiseon.common.Globals.RideType</param>

收件人:

<param name="enumClass">com.mcruiseon.common.Globals$RideType</param>

关于java - 由 : java. lang.ClassNotFoundException : com. mcruiseon.common.Globals.RideType 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29264620/

相关文章:

java - hibernate 多对一外键未设置

java - 具有一对多多态关系的 Hibernate 映射

java - 异常线程 "main"org.hibernate.MappingException : Unknown entity: bitronix. examples.hibernate.entities.User

java - 如何根据某些变量在小部件上应用各种样式?

java - 格式化字符串列表以输出到 YML

java - 使用反射调用公共(public)方法

c - 枚举 c 中的关联值

java - 如何计算非常大的 BigInteger 数字的 GCD 而不会出现 stackoverflow 异常?

c++ - 访问在类外声明的作用域枚举

swift - 如何在 swift 中为枚举添加更多案例