2010-07-12 170 views
0

我試圖將Spring與Hibernate集成,但在項目啓動時捕獲異常。ORM使用Hibernate的註釋與春天

Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.domain.Worker"/ 

我的配置: 從春天

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> 
     <property name="url" value="jdbc:mysql://localhost/school"/> 
     <property name="username" value="root"/> 
     <property name="password" value="toor"/> 
    </bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="myDataSource"/> 
     <property name="configLocation" value="/WEB-INF/hib.cfg.xml"/> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
    </bean> 

hib.cfg.xml

<hibernate-configuration> 


    <session-factory name="java:hibernate/SessionFactory"> 


     <property name="connection.datasource">java:/comp/env/jdbc/MyDB</property> 
     <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="show_sql">false</property> 
     <property name="transaction.factory_class"> 
      org.hibernate.transaction.JTATransactionFactory 
     </property> 
     <property name="jta.UserTransaction">java:comp/UserTransaction</property> 
     <property name="configClass">org.hibernate.cfg.AnnotationConfiguration</property> 

     <mapping class="com.domain.Worker"/> 
    </session-factory> 
</hibernate-configuration> 

域類

package com.domain; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
@Entity 
public class Worker extends DomainObject { 
    @Column(nullable = false, length = 20) 
    public String getFirstName() { 
     return firstName; 
    } 
//... 

回答

4

如果你想使用帶註釋實體的Hibernate API,你需要使用AnnotationSessionFactoryBean而不是LocalSessionFactoryBean

+0

僅供參考,該類的全名是org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean – benvolioT 2011-03-15 16:41:26

3

我如果你想使用JPA註釋,那麼你應該可能是using a LocalEntityManagerFactoryBean而不是LocalSessionFactoryBean

前者通過常規的JPA方法加載註釋和實體,而上面引用的配置嘗試直接使用Hibernate SessionFactory。