Mam istniejącej aplikacji, która używa Hibernate SessionFactory dla jednej bazy danych. Dodajemy kolejną bazę danych do wykonywania analiz. Transakcje nigdy nie przekroczą, więc nie potrzebuję JTA, ale chcę użyć JPA EntityManager dla nowej bazy danych.Czy istnieje sposób zdefiniowania domyślnego menedżera transakcji na wiosnę
Skonfigurowałem EntityManager i nowego menedżera transakcji, który zakwalifikowałem, ale Spring skarży się, że muszę zakwalifikować moje adnotacje @Transactional. Próbuję znaleźć sposób, aby powiedzieć Springowi, że domyślnie używa txManager. Czy jest jakiś sposób na zrobienie tego? W przeciwnym razie będę musiał dodać kwalifikator do wszystkich istniejących adnotacji @Transactional, których chciałbym uniknąć, jeśli to możliwe.
@Bean(name = "jpaTx")
public PlatformTransactionManager transactionManagerJPA() throws NamingException {
JpaTransactionManager txManager = new JpaTransactionManager(entityManagerFactory());
return txManager;
}
@Bean
public PlatformTransactionManager txManager() throws Exception {
HibernateTransactionManager txManager = new HibernateTransactionManager(sessionFactory());
txManager.setNestedTransactionAllowed(true);
return txManager;
}
Błąd Dostaję
No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined: expected single matching bean but found 2:
Dzięki
Czy można to zrobić w XML, ponieważ już mamy zdefiniowany w XML XML Manager Transakcji. Dzięki. – Mustafa
@Mustafa Tak, wystarczy użyć atrybutu "primary" i ustawić go na "true" na komponencie bean, który ma być podstawowym. – Josh