在 Spring petclinic 中设置 hibernate.max_fetch_depth

问题描述 投票:0回答:2

我正在尝试 spring petclinic 应用程序,其完整代码是在此链接。 我想设置

hibernate.max_fetch_depth=0
,但是当我重新启动tomcat服务器并从eclipse重新启动应用程序时,我似乎无法使此设置生效。

这里是包含所有配置文件的目录的链接我应该在哪个配置文件中放置

hibernate.max_fetch_depth=0
设置,以及我应该使用什么确切的语法?

我尝试将其放入

business-config.xml

<property name="jpaProperties">
     <props>
        <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
        <prop key="hibernate.max_fetch_depth">0</prop>
    </props>
</property>  

我也尝试将其放入

data-access.properties

 hibernate.max_fetch_depth=0  

但这两种方法似乎都不起作用。

java spring hibernate spring-mvc jpa
2个回答
1
投票

我在 GitHub 中的一项测试中设置了它:

properties.put("hibernate.max_fetch_depth", "0");

然后我调试了SessionFactory类:

Integer maxFetchDepth = ConfigurationHelper.getInteger( AvailableSettings.MAX_FETCH_DEPTH, properties );
if ( maxFetchDepth != null ) {
    LOG.debugf( "Maximum outer join fetch depth: %s", maxFetchDepth );
}
settings.setMaximumFetchDepth( maxFetchDepth );

效果非常好:

DEBUG [main]: o.h.c.SettingsFactory - Maximum outer join fetch depth: 0

尝试在 persistence.xml 中定义它:

<properties>
    <property name="hibernate.max_fetch_depth" value="0"/>
</properties>   

1
投票

我创建了

hibernate.properties
文件并将其放在
src/main/resources
下。

将以下条目添加到属性文件并重新启动服务器:

max_fetch_depth=3

从日志中我可以验证该属性是否已在休眠配置中设置。

© www.soinside.com 2019 - 2024. All rights reserved.