我在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状态当然找不到它…仅供参考..也许重新检查可以最好地解决您的问题。