Hibernate没有使用自定义的PhysicalNamingStrategy实现
在我的单元测试中,我想使用我自定义实现的 PhysicalNamingStrategy:
public class CustomPhysicalNamingStrategyStandardImpl implements PhysicalNamingStrategy {
@Override
public Identifier toPhysicalCatalogName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
return null;
...
}
这是我的配置:
<jdbc:embedded-database id="dataSource" type="H2"/>
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.physical_naming_strategy">com.mydomain.CustomPhysicalNamingStrategyStandardImpl</prop>
</props>
</property>
</bean>
尽管上面的配置,Hibernate仍然在使用 标准 实现的 PhysicalNamingStrategy(org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl,也就是说)。
我已经尝试了键值 hibernate.naming.physical_strategy,但它不起作用。
我也验证了其他属性确实生效,例如通过改变 hibernate.show_sql 的值来验证。
我这里到底少了什么,应该怎么修复?
我使用的是Spring Framework 6.0.13和 Hibernate 6.2.13。
解决方案
尝试在LocalSessionFactoryBean上设置 "physicalNamingStrategy" 属性
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="physicalNamingStrategy">
<bean class="com.mydomain.CustomPhysicalNamingStrategyStandardImpl"/>
</property>
<property name="hibernateProperties">...</property>
</bean>
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。