2012-01-26 127 views
1

我正在學習hibernate,我無法弄清楚爲什麼這個錯誤會彈出。我嘗試搜索,但我找不到幫助我的解決方案。我想知道爲什麼我得到這個錯誤。線程「主」異常org.hibernate.MappingException:未知實體:來自目的地

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

這裏還有一些細節:

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()); 
//  } 
    } 
} 

當我嘗試插入目標(註釋代碼),值被插入到數據庫。

配置:

的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> 

有人可以幫我想出解決辦法?

回答

3

使用session.createCriteria(Destination.class);您正在嘗試使用HQL - Hibernate Query Language,而您需要使用其他API像

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

請參閱我上面發佈的代碼。我正在使用您提到的與HQL相同的內容。任何原因爲什麼不起作用? – brainydexter

+1

@brainydexter - 你的HQL很好,但你應該使用「createQuery」方法而不是「createCriteria」 –

+0

謝謝你指出!我忽略了這一點。 – brainydexter

0

here,這樣的事情應該工作:

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

1

你正在混合HQL和Criteria查詢。您應該做的

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

session.createQuery("from Destination").list(); 
2
<mapping class="org.wah.dao.Destination" 
    resource="org/wah/dao/Destination.hbm.xml"/> 

,而不是這種情況,請其更改爲

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

休眠拋出這個錯誤,因爲當它期待一些基於註解類,你指的是基於XML的Hibernate映射。堅持兩種不同的規則註釋或基於XML。

0

我有一個簡單的控制檯應用程序嘗試使用Hibernate的類似問題。我到達的解決方案是爲LocalSessionFactoryBean顯式添加「packagesToScan」屬性。

<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> 
相關問題