为 LocalSessionFactoryBean mappingLocations 指定正则表达式
Specify a regular expression for LocalSessionFactoryBean mappingLocations
在我的应用程序中,我指定了以下配置以自动获取类路径中特定文件夹下的所有 HBM 文件。
<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。除了这些,在同一个文件夹中还有名称格式为 table1.hbm.xml、table2.hbm.xml 等的旧的常规 HBM 文件(用于映射到表)。
使用上述模式,由于新 hbm 文件中的重复命名查询(因为所有此类文件中的名称都相同),文件的休眠加载失败。
现在的要求是加载常规 HBM 文件以及数据库特定的 HBM 文件。是否可以通过使用如下正则表达式来实现?
classpath:hbms/**/*.(.${dbType}).hbm.xml
在上面的示例中,dbType 可用作 Spring 环境 属性。我对这些更改的尝试导致 none 的 HBM 文件被加载(包括旧文件)。
我是不是在使用正则表达式做错了什么,还是无法通过 XML 配置来做到这一点?
谢谢。
您有两个选择:
您可以将每个数据库特定的配置文件存储在单独的文件夹中,然后您的配置如下所示:
classpath:hbms/**/${dbType}/*.hbm.xml
您可以让它们遵循您提供的模式,但将配置更改为
classpath:hbms/**/*${dbType}.hbm.xml
要加载常用文件,您需要重命名它们以包含您可以匹配的内容,例如:
one.hbm.xml
成为:
common-one.hbm.xml
那么配置可能如下所示:
classpath:hbms/**/common-*.hbm.xml
classpath:hbms/**/*${dbType}.hbm.xml
在我的应用程序中,我指定了以下配置以自动获取类路径中特定文件夹下的所有 HBM 文件。
<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。除了这些,在同一个文件夹中还有名称格式为 table1.hbm.xml、table2.hbm.xml 等的旧的常规 HBM 文件(用于映射到表)。
使用上述模式,由于新 hbm 文件中的重复命名查询(因为所有此类文件中的名称都相同),文件的休眠加载失败。
现在的要求是加载常规 HBM 文件以及数据库特定的 HBM 文件。是否可以通过使用如下正则表达式来实现?
classpath:hbms/**/*.(.${dbType}).hbm.xml
在上面的示例中,dbType 可用作 Spring 环境 属性。我对这些更改的尝试导致 none 的 HBM 文件被加载(包括旧文件)。
我是不是在使用正则表达式做错了什么,还是无法通过 XML 配置来做到这一点?
谢谢。
您有两个选择:
您可以将每个数据库特定的配置文件存储在单独的文件夹中,然后您的配置如下所示:
classpath:hbms/**/${dbType}/*.hbm.xml
您可以让它们遵循您提供的模式,但将配置更改为
classpath:hbms/**/*${dbType}.hbm.xml
要加载常用文件,您需要重命名它们以包含您可以匹配的内容,例如:
one.hbm.xml
成为:
common-one.hbm.xml
那么配置可能如下所示:
classpath:hbms/**/common-*.hbm.xml
classpath:hbms/**/*${dbType}.hbm.xml