在我的应用程序中,我已指定以下配置,以自动获取类路径中特定文件夹下的所有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 。除了这些之外,还有旧的常规HBM文件(用于映射到表),名称格式如table1.hbm.xml,table2.hbm.xml等也存在于同一文件夹中。
使用上述模式,由于新hbm文件中的命名查询重复,因此文件的hibernate加载失败(因为所有这些文件中的名称都相同)。
现在要求加载常规HBM文件以及特定于DB的HBM文件。是否可以通过使用如下的正则表达式来实现这一点?
classpath:hbms/**/*.(.${dbType}).hbm.xml
在上面的示例中, dbType 可用作Spring环境属性。我对这些更改的尝试导致没有加载任何HBM文件(包括旧文件)。
我是否正常使用正则表达式,或者是否无法通过XML配置执行此操作?
谢谢。
答案 0 :(得分:0)
您有两种选择:
您可以将每个特定于数据库的配置文件存储在单独的文件夹中,然后您的配置如下所示:
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