Frage

Ich verwende Frühjahr zur Zeit für depency Injektion. Im Ruhezustand wird ein Postgres Dialekt für den normalen Lauf, aber ich will HSQL für die DBUnitils Datenbank-Tests verwenden.

Sie Frühling-Konfiguration enthält diese:                                                   

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

Die Felder von Maven Ressource-Filterung ersetzt bekommen.

Der Frühling-Configruation für DBUnitils enthält diese:

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

und so überschreibt die Datenquelle aus meiner Sicht Konfiguration mit dem UnitilsDataSource.

Das Problem:. Ich kann nicht die Tests unter Verwendung von Postgres-Dialect gegen die HSQL-Test Datenbank ausgeführt werden, da einige Befehle nicht funktionieren Die einzige Lösung, die ich in dem Sinn kam: die Ressource-Filter in Maven Switching, aber ich habe diese von Hand zu tun (von provining einen „-P TEST“ auf jedem Maven Anruf). So ist es nicht eine Möglichkeit, die hibernate.dialect außer Kraft zu setzen?

Danke!

War es hilfreich?

Lösung

Sie sollten möglicherweise bei Verwendung Frühjahr aussehen die PropertyPlaceHolderConfigurer in die Config zu ändern. Auf diese Weise brauchen Sie nur liefern eine andere Konfigurationsdatei für die verschiedenen Umgebungen, die Feder xml bleibt gleich.

Und Sie können die Konfigurationsdatei wie diese .

Andere Tipps

Sie müssen in der Regel überhaupt nicht den Dialekt spezifizieren, Hibernate es durch einen Blick auf die zugrunde liegende Datenquelle herauszufinden. Sie müssen nur den Dialekt angeben, wenn Sie den Ruhezustand zwingen wollen eine bestimmte zu verwenden.

In Ihrem Fall sollten Sie nur in der Lage sein, den Dialekt Eigenschaft vollständig zu entfernen, und es sollte ohne Config-Modifikation in Postgres und hsql arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top