如何配置spring 3.1.4的OpenSessionInViewInterceptor的flushMode属性

时间:2014-01-20 10:57:13

标签: spring hibernate spring-mvc spring-webflow

因为我计划从“hibernate3”更新为“hibernate4”& “春季3.0.5”至“春季3.1.4”。

我在spring 3.0.5中配置了 OpenSessionInViewInterceptor ,所以想在3.1.4中配置相同的内容。

但是我无法在Spring 3.1.4的flushMode中配置OpenSessionInViewInterceptor;

我之前的 spring 3.0.5 设置为:

<bean name="openSessionInViewInterceptor"
      class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
      <property name="sessionFactory">
             <ref bean="sessionFactory" />
      </property>
      <property name="flushMode">
             <bean
                   id="org.springframework.orm.hibernate3.HibernateAccessor.FLUSH_NEVER"
                   class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />
      </property>
</bean>

现在尝试为spring 3.1.4配置相同的内容,如下所示:

<bean name="openSessionInViewInterceptor"
    class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
    <property name="flushMode">
        <bean
            id="org.springframework.orm.hibernate3.HibernateAccessor.FLUSH_NEVER"
            class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />
    </property>
</bean>

然后它抛出异常:

org.springframework.beans.NotWritablePropertyException: Invalid property 'flushMode' of bean class [org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor]: Bean property 'flushMode' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

在春季3.1.4中,在org.springframework.orm.hibernate3.HibernateAccessor的替代中找不到类似的类

所以我的问题是如何设置spring 3.1.4的OpenSessionInViewInterceptor的flushMode属性?

1 个答案:

答案 0 :(得分:0)

looks就像一团糟,带有未绑定的属性访问者链接。考虑到不同的继承层次结构,我猜想复制粘贴工作没有太多考虑清理工作。发生这种情况时我讨厌它......

您可以使用Hibernate 3版本吗?是的,它似乎确实存在;这是链接:org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor

从长远来看,更仔细地看看Hibernate 4代码是否符合您的要求而不指定标志。不幸的是,你必须忽略文档(至少目前为止)并研究the source本身。