brainydexter
brainydexter

Reputation: 20386

Exception in thread "main" org.hibernate.MappingException: Unknown entity: from Destination

I am learning hibernate and I can't figure out why is this error popping up. I tried searching but I couldn't find a solution that helped me. I'd like to learn why am I getting this error.

Exception in thread "main" org.hibernate.MappingException: Unknown entity: from Destination

Here are some details:

main():

    public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();

//      Destination destination = new Destination();
//      destination.setName("IDelhi");
//      destination.setLatitude(1.0f);
//      destination.setLongitude(123.0f);
//      session.save(destination);

        List result = session.createCriteria("from Destination").list();

        session.getTransaction().commit();

        session.close();

//      for (Object dest : result) {
//          Destination d = (Destination)dest;
//          System.out.println(d.getId() + ": "+ d.getName());
//      }
    }
}

When I try to insert the destination (commented code), values are being inserted into db.

Configurations:

hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="">
  <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
  <property name="hibernate.connection.password">*****</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/</property>
  <property name="hibernate.connection.username">*****</property>
  <property name="hibernate.default_schema">wah_schema</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
  <!-- Echo all executed SQL to stdout -->
  <property name="show_sql">true</property>
  <!-- Enable Hibernate's automatic session context management -->
  <property name="current_session_context_class">thread</property>
  <mapping class="org.wah.dao.Destination" resource="org/wah/dao/Destination.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

Destination.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Jan 25, 2012 3:31:00 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
 <class name="org.wah.dao.Destination" table="DESTINATION">
  <id name="id" type="int">
   <column name="ID"/>
   <generator class="identity"/>
  </id>
  <property generated="never" lazy="false" name="name" type="java.lang.String">
   <column name="NAME"/>
  </property>
  <property generated="never" lazy="false" name="latitude" type="float">
   <column name="LATITUDE"/>
  </property>
  <property generated="never" lazy="false" name="longitude" type="float">
   <column name="LONGITUDE"/>
  </property>
 </class>
</hibernate-mapping>

Can someone please help me figure this out ?

Upvotes: 1

Views: 7811

Answers (5)

Madhan Ganesh
Madhan Ganesh

Reputation: 2293

I had similar problem for a simple Console application trying to use Hibernate. The solution I arrived to make the add the "packagesToScan" property explicitly for LocalSessionFactoryBean.

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
   <property name="dataSource" ref="dataSource"/>
   <property name="packagesToScan" value="com.mg.learning.spring.orm"/> <--- this SOLVED!
   <property name="hibernateProperties">
    <props>
        <prop key="dialect">org.hibernate.dialect.MySQL5Dialect</prop>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
    </props>
   </property>
</bean>

Upvotes: 0

PRAVEEN KUMAR
PRAVEEN KUMAR

Reputation: 21

<mapping class="org.wah.dao.Destination"
     resource="org/wah/dao/Destination.hbm.xml"/>

instead of this, please change it to

<mapping resource="org/wah/dao/Destination.hbm.xml">

Hibernate throws this error because when it expect some Annotation based class, you are referring the XML based Hibernate mapping. Stick to two different rule Annotations or XML based.

Upvotes: 2

Alex Gitelman
Alex Gitelman

Reputation: 24732

You are mixing HQL and Criteria query. You should either do

session.createCriteria(Destination.class).list();

or

session.createQuery("from Destination").list();

Upvotes: 1

Aravind Yarram
Aravind Yarram

Reputation: 80194

use session.createCriteria(Destination.class); You are trying to use HQL - Hibernate Query Language for which you need to use other api like

Query query = session.createQuery("from Destination");
List list = query.list();

Upvotes: 3

npinti
npinti

Reputation: 52185

According to here, something like this should work:

List result = session.createCriteria(Destination.class).list();

Upvotes: 0

Related Questions