当前位置: 首页 > 面试题库 >

Hibernate:无法加载在Hibernate配置中声明的类 条目

魏煜祺
2023-03-14
问题内容

我在Hibernate中是一个全新的人,并得到了这样的堆栈跟踪:

hql> from TracksEntity 
[2014-04-26 21:13:45] org.hibernate.MappingException: Unable to load class [ model.TracksEntity] declared in Hibernate configuration <mapping/> entry
[2014-04-26 21:13:45] java.lang.ClassNotFoundException: model.TracksEntity
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:259)
    at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:192)
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2188)
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2139)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2119)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2072)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2045)
    at com.intellij.hibernate.remote.impl.RemoteConfigurationImpl.configure(RemoteConfigurationImpl.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
    at sun.rmi.transport.Transport$1.run(Transport.java:178)
    at sun.rmi.transport.Transport$1.run(Transport.java:175)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:174)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:557)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:812)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:671)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:744)

我的hibernate.cfg.xml和TracksEntity.java是由Intellij Idea自动生成的:

TracksEntity.java:包模型;

import javax.persistence.*;

@Entity
@Table(name = "TRACKS", schema = "APP", catalog = "")
public class TracksEntity {
    private int id;
    private String artist;
    private int duration;
    private String title;
    private String url;

    @Id
    @Column(name = "ID")
    public int getId () {
        return id;
    }

    public void setId (int id) {
        this.id = id;
    }

    @Basic
    @Column(name = "ARTIST")
    public String getArtist () {
        return artist;
    }

    public void setArtist (String artist) {
        this.artist = artist;
    }

    @Basic
    @Column(name = "DURATION")
    public int getDuration () {
        return duration;
    }

    public void setDuration (int duration) {
        this.duration = duration;
    }

    @Basic
    @Column(name = "TITLE")
    public String getTitle () {
        return title;
    }

    public void setTitle (String title) {
        this.title = title;
    }

    @Basic
    @Column(name = "URL")
    public String getUrl () {
        return url;
    }

    public void setUrl (String url) {
        this.url = url;
    }

    @Override
    public boolean equals (Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        TracksEntity that = (TracksEntity) o;

        if (duration != that.duration) return false;
        if (id != that.id) return false;
        if (artist != null ? !artist.equals(that.artist) : that.artist != null) return false;
        if (title != null ? !title.equals(that.title) : that.title != null) return false;
        if (url != null ? !url.equals(that.url) : that.url != null) return false;

        return true;
    }

    @Override
    public int hashCode () {
        int result = id;
        result = 31 * result + (artist != null ? artist.hashCode() : 0);
        result = 31 * result + duration;
        result = 31 * result + (title != null ? title.hashCode() : 0);
        result = 31 * result + (url != null ? url.hashCode() : 0);
        return result;
    }
}

hibernate.cfg.xml:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:derby:/home/zimy/Documents/drbdb;create=true;create=true</property>
        <property name="connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property>
        <mapping class="model.TracksEntity"/>
    </session-factory>
</hibernate-configuration>

到底是什么问题?我发现找不到它,但是为什么呢?


问题答案:

听起来很傻,但是我将实体类放在与映射中不同的包中。并且hibernate状态当然找不到它…仅供参考..也许重新检查可以最好地解决您的问题。



 类似资料:
  • 我正在创建OSGi动态包,它应该与数据库通信,我使用Hibernate,就像我在非OSGI应用程序中使用它一样。我将原始的hibernate jar放在OSGi项目的lib目录中,并确保这些jar位于项目的构建路径和运行时类路径上,我复制了OSGi捆绑jar根目录中的所有配置文件(即hibernate-cfg.xml)。当我在OSGi容器中执行我的捆绑包(JAR)时,它会因找不到hibernate

  • 我安装了一个与PostgreSQL一起工作的JBoss...我正在尝试改用MySQL。 我下载了mysql-connector-java-5.1.36-bin.jar并将其放入jboss_home/module/com/mysql/main,创建了module.xml并更改了standalone.xml。 但是,如果我尝试启动服务器,我就得到了下面的stacktrace: 有人能帮忙吗? 我的St

  • 我正在使用Struts、Spring和Hibernate与mysql&Eclipse Kepler的集成进行在线考试项目。在Registration.jsp页面中提交值时,我试图将这些值存储在同一个数据库中的两个不同的表(user_details,address)中。我可以将它们存储在数据库中,但我不能获取user_id,这是地址表的外键。user_id是user_details表中的主键,除了地

  • 问题内容: 我正在尝试在在线考试中实现STRUTS SPRING和HIBERNATE INTEGRATION。使用apache tomcat 7.0.42在Eclipse Kepler中运行项目时,抛出以下错误 在控制台日志中,出现以下内容, struts.xml 请帮我朋友。我不知道为什么会出现。无论如何在此先感谢… !!! 问题答案: 我认为您缺少“ struts2-spring-plugin

  • 问题内容: 大家好,我是hibernate的初学者,我知道这里有很多类似的问题。我试图从他们那里解决,但我做不到。我还试图在dtd中将SYSTEM从PUBLIC更改为,但是它不起作用。我用谷歌搜索它,但是到处都显示dtd语句错误。 这是我的配置文件。 我尝试将版本3.0更改为4.0,因为我正在使用hibernate版本4.3.6,但仍无法正常工作。请帮帮我。 这是我的userDetails类。 软

  • 嘿,伙计们,我是冬眠的初学者,我知道这里有很多类似的问题。我试图从他们那里解决问题,但我做不到。我还试图在dtd中更改公共系统,但它不起作用。我在google上搜索了它,但它显示的每个地方都有dtd语句错误。 这是我的配置文件。 我尝试将版本3.0更改为4.0,因为我使用的是hibernate版本4.3.6,但它仍然不起作用。请帮帮我。 这是我的用户详细信息类... 包装组织。冬眠src; 我已将