ORM, используя аннотации Hibernate с Spring - PullRequest
0 голосов
/ 12 июля 2010

Я пытаюсь интегрировать Spring с 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;
    }
//...

Ответы [ 2 ]

4 голосов
/ 12 июля 2010

Если вы хотите использовать Hibernate API с аннотированными объектами, вам нужно использовать AnnotationSessionFactoryBean вместо LocalSessionFactoryBean.

3 голосов
/ 12 июля 2010

Если вы хотите использовать аннотации JPA, тогда вам, вероятно, следует использовать , используя LocalEntityManagerFactoryBean, а не LocalSessionFactoryBean.

. Первый из них загружает ваши аннотации и объекты через обычный JPAметоды, в то время как ваша конфигурация, приведенная выше, пытается напрямую использовать Hibernate SessionFactory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...