/ / Spring, JPA, Hibernate 3 vs 4 - java, spring, hibernate, jpa

Spring, JPA, Hibernate 3 vs 4 - java, spring, hibernate, jpa

Używam Spring (3.2.4.RELEASE) i Hibernate (4.2.8.Final) w moim projekcie i przy użyciu konfiguracji JPA.

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
...
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
...
</bean>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

Używam mechanizmów optymalizacji blokowania hibernacji, jak poniżej.

@Entity
public class Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

@Version
@Generated(GenerationTime.ALWAYS)
private int version;
}

Moje pytanie brzmi, kiedy aktualizuję Entity o złą wersję, dlaczego to jest rzut

org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException

nie

org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException ?

Odpowiedzi:

1 dla odpowiedzi № 1

spring-orm-3.2.4.RELEASE zawiera pakiety dla obu org.springframework.orm.hibernate3. * i org.springframework.orm.hibernate4. *.

Więc nawet jeśli masz hibernację w wersji 4.2.8.słoik w bibliotece projektu, gdy używasz danych sprężynowych jpa, na jakiejkolwiek niepoprawnej operacji bazy danych do konwertowania wszystkich sprawdzonych wyjątków na niezaznaczone (uruchomione) wyjątki hibernacji HibernateExceptionTranslator jest używany z org.springframework.orm.hibernate4.HibernateExceptionTranslator.

Upewnij się, że użyłeś org.springframework.orm.hibernate3.HibernateExceptionTranslator w pliku konfiguracyjnym komponentu bean, jeśli chcesz używać wersji 3.0.