因为我计划从“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属性?
答案 0 :(得分:0)
它looks就像一团糟,带有未绑定的属性访问者链接。考虑到不同的继承层次结构,我猜想复制粘贴工作没有太多考虑清理工作。发生这种情况时我讨厌它......
您可以使用Hibernate 3版本吗?是的,它似乎确实存在;这是链接:org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor
从长远来看,更仔细地看看Hibernate 4代码是否符合您的要求而不指定标志。不幸的是,你必须忽略文档(至少目前为止)并研究the source本身。