Esiste un modo per ottenere un handle per EntityManager per un determinato oggetto entità? Sto usando Spring Boot 1.2.3 con avviamento JPA e sto ulteriormente configurando più fonti di dati con @configuration
Ottenere l'handle su EntityManager in Spring Boot
Ho controllato [resolved]SPRING BOOT access to entityManager e non sembra rispondere alla domanda.
Grazie.
EDIT: ho aggiunto la descrizione di come le mie fonti di dati sono definite:
@Component
@Configuration
public class DataSources {
@Bean
@Primary
@ConfigurationProperties(prefix="first.datasource")
public DataSource getPrimaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix="second.datasource")
public DataSource getSecondDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix="third.final.datasource")
public DataSource getThirdFinalDataSource() {
return DataSourceBuilder.create().build();
}
}
Nel mio application.yml ho le seguenti sezioni
first.datasource:
name: 'first_datasource',
#other attributes...
second.datasource:
name: 'second_datasource',
#other attributes...
third.final.datasource:
name: 'first_datasource',
#other attributes...
Finora ho provato entrambi dei suggerimenti di @ Stephane ma ottengo NoSuchBeanDefinitionException
Diciamo che la mia entità si chiama Customer
poi ho provato
@Service
public class FooService {
private final EntityManager entityManager;
@Autowired
public FooService(@Qualifier("customerEntityManager") EntityManager entityManager) {
...
}
}
Ma ho anche provato
@PersistenceContext(unitName = "customer") // also tried "customers" and "first_datasource"
private EntityManager entityManager;
senza fortuna.
È un po 'difficile da dire senza vedere come è stato configurato il database JPA. Normalmente dovresti essere in grado di usare '@ PersistenceContext' e sei a posto. Puoi mostrarci come hai configurato il tuo database? – Makoto
Grazie, ho capito. Solo se si desidera un'origine dati diversa da quella primaria è necessario fornire un nomeunità. L'omissione del nome dell'unità ti consente di ottenere il gestore di entità principale che alla fine ha funzionato per il mio scopo. – pastafarian