1

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 ?

5 Answers 5

3

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();
Sign up to request clarification or add additional context in comments.

2 Comments

Pls see the code I posted above. I am using the same thing you mentioned for HQL. Any reasons why that doesn't work ?
@brainydexter - your HQL is good but you should use "createQuery" method not "createCriteria"
2
<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.

Comments

1

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

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

or

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

Comments

0

According to here, something like this should work:

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

Comments

0

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>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.