2014-01-20 4 views
0

Как я планирую обновить с «hibernate3» до «hibernate4» & «spring 3.0.5» до «spring 3.1.4».Как настроить свойство flushMode OpenSessionInViewInterceptor весны 3.1.4

Я сконфигурировал OpenSessionInViewInterceptor весной 3.0.5, поэтому вы хотите настроить его в 3.1.4.

Но я не могу настроить flushMode в OpenSessionInViewInterceptor of Spring 3.1.4;

Моя Предыдущая установка для весной 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> 

Теперь пытался настроить так же весной 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? 

И нет подобного класса, найденного в alt ernate до org.springframework.orm.hibernate3.HibernateAccessor весной 3.1.4

Так что мой вопрос в том, как установить свойство flushMode OpenSessionInViewInterceptor весны 3.1.4?

ответ

0

Это looks как беспорядок, с несвязанными ссылками на объекты доступа. Я предполагаю, что работа с копией-парой была сделана без особого размышления об очистке вещей, учитывая разные иерархии наследования. Я ненавижу, когда это происходит ...

Можете ли вы использовать версию Hibernate 3 вместо этого? Да, на самом деле это действительно так; вот ссылка: org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor

Более длительный срок, посмотрите более внимательно, делает ли код Hibernate 4 то, что вы хотите, без указания флага вообще. К сожалению, вам придется игнорировать документацию (по крайней мере пока) и изучить the source.

+0

Ya Я знаю, что это просто копия-паста, и в OpenSessionInViewInterceptor весны 3.1.4 нет аксессуаров свойств, вот почему я прошу какой-то способ сделать это. На самом деле я хочу интегрировать Hibernate Search в свое приложение, поэтому перейдите в спящий режим 4 & spring 3.1.4. Можем ли мы использовать 'org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor' со всеми настройками 4 версии. как когда я пытался сделать это ниже исключения: 'java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession() Lorg/hibernate/classic/Session;' – Atul

Смежные вопросы