zu definieren Ich habe eine vorhandene Anwendung, die Hibernate SessionFactory für eine Datenbank verwendet. Wir fügen eine weitere Datenbank für Analytics hinzu. Die Transaktionen werden sich niemals kreuzen, also brauche ich kein JTA, aber ich möchte JPA EntityManager für die neue Datenbank verwenden.Gibt es eine Möglichkeit, einen Standard-Transaktionsmanager in Spring
Ich habe den EntityManager und den neuen Transaktionsmanager eingerichtet, den ich qualifiziert habe, aber Spring beschwert sich darüber, dass ich meine vorhandenen @Transactional-Annotationen qualifizieren muss. Ich versuche einen Weg zu finden, Spring mitzuteilen, dass er den txManager als Standard verwenden soll. Gibt es eine Möglichkeit, dies zu tun? Ansonsten muss ich das Qualifikationsmerkmal zu allen vorhandenen @Transactional Annotations hinzufügen, die ich möglichst vermeiden möchte.
@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;
}
Fehler Ich erhalte
No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined: expected single matching bean but found 2:
Dank
Kann dies im XML erfolgen, da wir bereits den Transaction Manager in XML definiert haben. Vielen Dank. – Mustafa
@Mustafa Ja, Sie verwenden nur das Attribut 'primary' und setzen es auf 'true' für die Bean, die Sie als primäres verwenden möchten. – Josh