Reputation: 165
I am completely new in Hibernate and got such an stacktrace:
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)
My hibernate.cfg.xml and TracksEntity.java was automatically generated by Intellij Idea:
TracksEntity.java: package model;
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>
What the problem is? I see that it is not found, but why?
Upvotes: 4
Views: 32437
Reputation: 1
I was having the same issue, After adding this dependency it's resolved.
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
Upvotes: 0
Reputation: 1
To resolve this issue add maven spring-boot dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
Upvotes: 0
Reputation: 11
You can do it by two methods, 2nd one definitely works.
<mapping class="com.sample.yourClass" />
Configuration config = new Configuration(); config.addClass(com.sample.yourClass);
Upvotes: 1
Reputation: 1219
In my case, I have just redeployed project. Then problem solved!
Upvotes: 0
Reputation: 975
My mistake was a camel case problem. I had an embedded entity "IndexPK" and wrote "IndexPk" in the mapping file. I compared it ~20 times.... till I figured this out.
Upvotes: 0
Reputation: 1377
i recently experienced this. I checked everything and didn't find anything that might have caused it. In desperation, i just moved the "/>" closer in the mapping and saved it. And it worked. Mysterious...
Upvotes: 0
Reputation: 41
I had a similar problem when the mapping file wouldn´t load correctly. The answer to this problem seems to be that we need to use the correct import statements in our Model classes.
Changing the import to import javax.persistence.Entity
instead of using the one from hibernate package ( ie org.hibernate.annotations.Entity
), fixed the issue in my case.
This issue is a real pain , and I spent more than 1/2 day looking at all corners, when a simple import fixed the issue.
Hope this helps.
Upvotes: 2
Reputation: 807
Worked for me:
Changing position of mapping tag in hibernate.cfg.xml for class which was not loading previously.
I kept that at top now.
Upvotes: 0
Reputation: 4991
Sounds quite silly but i was putting my entity Class in a package which is not the same i put in the mapping.. and hibernate of course could not find it... just for reference.. maybe a recheck can solve your problem best regards.
Upvotes: 7
Reputation: 210
write in this pattern
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dairy
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- MAPPING -->
<!-- <mapping class="com.om.model.Test" /> -->
<mapping class="com.om.model.RateCalculationBean" />
</session-factory>
and also no need to mention scema
Upvotes: 3