2017-03-27 5 views
7

Próba uaktualnienia do stanu hibernacji 5.2.9 od 4.3.11. Obecnie używa natywnego api hibernacji. Po dodaniu zależności w pom.xml pojawia się następujący błąd podczas uruchamiania testów jednostek:Uaktualnienie Hibernacji 4.3 do 5.2 - nie można jednocześnie pobrać wielu torebek.

Niezadowolona zależność wyrażona poprzez pole 'sessionFactory'; Zagnieżdżony wyjątek to org.springframework.beans.factory.BeanCreationException: Błąd tworzenia komponentu bean o nazwie 'sessionFactory' zdefiniowany w ścieżce klasy resource [testApplicationContext.xml]: Wywołanie metody init nie powiodło się; wyjątek zagnieżdżonych jest org.hibernate.loader.MultipleBagFetchException: nie można jednocześnie pobierać kilka toreb

Mam testApplicationContext.xml z następujących czynności:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="packagesToScan" value="org.xxxx.xxxx.xxxx.model"/> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.use_sql_comments">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager" /> 

zaktualizowałem SessionFactory i transactionManager z hibernate4 do hibernate5.

pom.xml:

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.9.Final</version> 
    </dependency> 

O ile mogę powiedzieć, komunikat o błędzie wskazuje, że istnieje problem wielokrotnego ładowania chętnie załadowany kolekcji. Rozumiem jednak z numeru this, że stosowanie adnotacji hibernacji i nowszych wersji hibernacji obsługuje ten przypadek użycia.

Czy ktoś może pomóc? Dzięki

Odpowiedz

6

Ten problem został rozwiązany.

W kilku moich podmiotach używałem List dla @OneToMany.

Zmiana na Set spowodowała błąd. Nie wiesz jeszcze, dlaczego to działało/było obsługiwane w Hibernate 4.3.11, a nie 5.2.9. Zaktualizuję tę odpowiedź, jeśli znajdę dalsze informacje.

Więcej informacji na temat List vs Set można znaleźć here i here.

Powiązane problemy