2015-04-09 8 views
1

В моем приложении я определил приведенную ниже конфигурацию для автоматического сбора всех файлов HBM в определенной папке в пути к классам.Укажите регулярное выражение для LocalSessionFactoryBean mappingLocations

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="mappingLocations"> 
    <list> 
     <value>classpath:hbms/**/*.hbm.xml</value> 
    </list> 
    </property> 
</bean> 

Теперь, новое требование, необходимо создать несколько файлов HBM с именованными запросами, специфичными для базы данных. Имена файлов HBM будут иметь шаблон test.DB.hbm.xml. Например, test.oracle.hbm.xml и test.db2.hbm.xml. В дополнение к ним существуют старые обычные файлы HBM (для сопоставления таблиц) с форматом имени, как table1.hbm.xml, table2.hbm.xml и т. Д., Также присутствующие в одной папке.

Используя приведенный выше шаблон, спящий режим загрузки файлов не удался из-за дублирования именованных запросов в новых файлах hbm (так как имя было бы одинаковым во всех таких файлах).

Требование теперь заключается в загрузке обычных файлов HBM, а также конкретных HBM-файлов. Можно ли добиться этого, используя регулярное выражение, как показано ниже?

classpath:hbms/**/*.(.${dbType}).hbm.xml 

В приведенном выше примере, DbType доступен как свойство Спринг среды. Моя попытка с этими изменениями не привела ни к одному из загружаемых файлов HBM (включая старые).

Я делаю что-то неправильно с регулярным выражением или это невозможно сделать с помощью конфигурации XML?

спасибо.

+0

Путь, вероятно, разрешен [PathMatchingResourcePatternResolver] (http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/core/ io/support/PathMatchingResourcePatternResolver.html), поэтому это не стандартное регулярное выражение. Итак, как первый шаг, я бы избавился от этих круглых скобок. –

ответ

0

У вас есть два варианта:

  1. Вы можете иметь каждая база данных конкретных конфигурационные файлы хранятся в отдельной папке, а затем ваш конфиг выглядит следующим образом:

    classpath:hbms/**/${dbType}/*.hbm.xml 
    
  2. Вы можете иметь их следуйте инструкциям, которые вы предоставили, но измените конфигурацию на

    classpath:hbms/**/*${dbType}.hbm.xml 
    

Чтобы загрузить общие файлы, вам нужно переименовать их включить то, что вы можете соответствовать, как:

one.hbm.xml 

становится:

common-one.hbm.xml 

Тогда конфигурация может выглядеть следующим образом:

classpath:hbms/**/common-*.hbm.xml 
    classpath:hbms/**/*${dbType}.hbm.xml 
+0

Спасибо за ответ Влад. Первый подход для нас пока невозможен, так как скрипты сборки должны быть изменены. Я попробовал второй подход, который вы предоставили. Однако с ним не загружаются обычные файлы hbm (формата one.hbm.xml). Извините, если это непонятно из описания вопроса. Я отредактировал вопрос, чтобы сделать его более ясным. – Anoop

+0

Проверьте обновленный ответ. –

+0

Спасибо Владу. Наконец, мы решили изменить скрипты сборки и перейти к первому подходу, который вы предложили (сохранение файлов конфигурации в отдельных папках). – Anoop

Смежные вопросы