Pregunta

Actualmente uso el resorte para inyección de dependencia. Hibernate usa un dialecto postgres para la ejecución normal, pero quiero usar HSQL para DBUnitils Databank-Testing.

Mi Configuración de primavera contiene esto:                                                   

<!-- Hibernate session factory -->
<bean id="sessionFactory"
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="use_outer_join">${hibernate.use_outer_join}</prop>

            <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
            <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
            <prop key="hibernate.cache.provider_class">${hibernate.cache.provider}</prop>

            <prop key="hibernate.connection.pool_size">10</prop>
            <prop key="hibernate.jdbc.batch_size">1000</prop>
            <prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>

        </props>
    </property>
    <property name="annotatedClasses">
        <list>
            <value>de.dbruhn.relations.model.Relation</value>
            <value>de.dbruhn.relations.model.RelationData</value>
            <value>de.dbruhn.relations.model.RObject</value>
            <value>de.dbruhn.relations.model.Type</value>
       </list>
    </property>

    <property name="schemaUpdate" value="${hibernate.schemaUpdate}"/>
</bean>

Los campos se reemplazan por filtrado de recursos de maven.

La configuración de primavera para DBUnitils contiene esto:

<bean id="dataSource" class="org.unitils.database.UnitilsDataSourceFactoryBean"/>
</beans>

y anula el dataSource de mi configuración de ejecución con UnitilsDataSource.

El problema: no puedo ejecutar las pruebas usando Postgres-Dialect contra la base de datos de prueba HSQL porque algunos comandos no funcionan. La única solución que me vino a la mente: cambiar el filtro de recursos en maven, pero tengo que hacerlo a mano (proporcionando un '' PRUEBA P '' en cada llamada de maven). Entonces, ¿no existe la posibilidad de anular hibernate.dialect?

¡Gracias!

¿Fue útil?

Solución

Posiblemente debería considerar usar PropertyPlaceHolderConfigurer en primavera para cambiar la configuración. De esa manera, solo necesita proporcionar un archivo de configuración diferente para los diferentes entornos, el spring xml permanece igual.

Y puede cargar el archivo de configuración como this .

Otros consejos

Normalmente no necesita especificar el dialecto en absoluto, Hibernate lo resolverá mirando la fuente de datos subyacente. Solo necesita especificar el dialecto si desea forzar a Hibernate a usar uno específico.

En su caso, debería poder eliminar completamente la propiedad del dialecto, y debería funcionar en postgres y hsql sin modificación de la configuración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top