2012-02-13 13 views
10

esiste un modo per definire gli oggetti in hibernate.cfg.xml in base all'ambito e non uno alla volta?Hibernate + Spring MVC: configurazione di mapping degli oggetti

Per esempio, in primavera è possibile definire tutti i controller da tale annotazione:

<context:component-scan base-package="crm.controller" /> 

posso definire classi hibernate nello stesso modo? O deve essere definito uno per uno?

Grazie

+0

Domande correlate: http://stackoverflow.com/q/1413190/211197 http://stackoverflow.com/q/2419802/211197 – maksimov

risposta

1

Se si utilizza Spring MVC, è possibile configurarlo durante l'impostazione di sessionFactory. Se si utilizzano file HBM:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="mappingResources"> 
     <list> 
      <value>file1.hbm.xml</value> 
      <value>file2.hbm.xml</value> 
     </list> 
    </property> 
    <property name="hibernateProperties" ref="hibernateProperties"/> 
</bean> 

Se si utilizza le classi annotate:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.me.domain"> 
    <property name="hibernateProperties" ref="hibernateProperties"/> 
</bean> 
0

Provare a utilizzare:

<mapping package="com.mycompany.model" /> 

invece di una serie di elementi:

<mapping class="com.mycompany.model.EntytyOne" /> 
<mapping class="com.mycompany.model.EntytyTwo" /> 
+0

Non funziona per me – nKognito

+0

Potrebbe fornire maggiori dettagli? Hai qualche errore nei log? Potresti incollarli qui forse? –

+0

Quando uso il pacchetto di mappatura mi dà l'errore Entità non trovata – nKognito

0

Perchè non provare questo. Ho questo configurato in springDAOcontext.xml

<bean id="csiSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
     <value>classpath:hibernate/hibernate.cfg.xml</value> 
    </property> 
    <property name="dataSource" ref="DataSource"/> 

    <property name="mappingResources"> 
     <list> 
      <value>hibernate/*</value> 
        </list> 
        <property> 
0

Per quanto posso ricordare, Hibernate in quanto è out-of-the box, non supporta "pacchetto-Sanning" per scoprire le vostre classi di dominio.

Ma dato che stai integrando Hibernate con Spring MVC, puoi annotare le tue classi (annotazioni standard JPA + Hibernate) e all'interno del tuo file di configurazione del contesto Spring, specifica il pacchetto che contiene le classi di entità Hibernate. Ecco come ho configurato in un precedente progetto:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="org.springmvc.domain" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
      <prop key="show_sql">true</prop> 
      <prop key="log_level">DEBUG</prop> 
     </props> 
    </property> 
</bean> 

Il "packagesToScan" proprietà definiscono i pacchetti che la primavera dovrà scansione Hibernate per scoprire le classi di entità.

0

im uso JPA annotazioni @ Entity, il codice di applicationContext.xml è:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.yourcompany.module" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     </props> 
    </property> 
</bean> 

Il percorso del pacchetto "com.yourcompany.module" è il tuo pacchetto di entità java, ad esempio:

package com.yourcompany.module; 
@Entity 
class MyEntity{ 
    private Long id; 
    set get... 
} 
Problemi correlati