У меня есть 2 источника данных.Первичная БД хорошо написана, поэтому я использую ее с JPA для нескольких запросов.Вместо этого вторичный источник данных использует действительно ужасную базу данных, но мне нужно сделать только один большой запрос (и никаких других операций).По этой ссылке я смог установить вторичный источник данных (на weblogic), поэтому теперь моя цель - вызвать собственный запрос на вторичном источнике данных.
Вот мой код:
application.properties
spring.datasource.jiano.jndi-name=jdbc/JianoDS
spring.datasource.jiano.driver-class-oracle.jdbc.driver.OracleDriver
spring.datasource.jiano.hikari.connection-timeout=60000
spring.datasource.jiano.hikari.maximum-pool-size=5
spring.datasource.sgu.jndi-name=jdbc/sguDatasource
spring.datasource.sgu.driver-class-oracle.jdbc.driver.OracleDriver
spring.datasource.sgu.hikari.connection-timeout=60000
spring.datasource.sgu.hikari.maximum-pool-size=5
Основная загрузочная пружина:
@ComponentScan
@SpringBootApplication
public class BemonitorcaaApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(BemonitorcaaApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(BemonitorcaaApplication.class);
}
}
Я добавил класс ниже для обработки нескольких источников данных :
@Configuration
public class DatasourceConfig {
@Value("${spring.datasource.jiano.jndi-name}")
private String primaryJndiName;
@Value("${spring.datasource.sgu.jndi-name}")
private String secondaryJndiName;
private JndiDataSourceLookup lookup = new JndiDataSourceLookup();
@Primary
@Bean(destroyMethod = "") // destroy method is disabled for Weblogic update app ability
public DataSource primaryDs() {
return lookup.getDataSource(primaryJndiName);
}
@Bean(name = "sguDs", destroyMethod = "") // destroy method is disabled for Weblogic update app ability
public DataSource secondaryDs() {
return lookup.getDataSource(secondaryJndiName);
}
}
Контроллер:
@RestController
@RequestMapping("/test")
public class IapaController {
@Autowired
IapaService iapaService;
@PersistenceContext
EntityManager em;
@RequestMapping("/v1/the-only-query-on-2nd-datasource")
public List<String> test2ndDS() {
List<String> itemList = em.createQuery("Select a.text ......." )
.getResultList(); //Not working
return itemList ;
}
@RequestMapping("/v1/primary-ds-is-working-fine")
public List<IapaTipiAndamenti> test1stDS() {
return iapaService.test1stDS(); //This is working, here for example I will use a typical jpa findAll
}
//...other jpa methods for the primary datasource
}
Менеджер сущностей не работает, я попытался добавить конфигурацию менеджера сущностей в DatasourceConfig
, но он не работает.(Например, у меня нет пакета для сканирования, потому что я делаю только собственный запрос к вторичному источнику данных, который возвращает тип примитива, поэтому нет классов домена или репозитория.)
Как я могу исправитьменеджер предприятия?(Я использую Spring boot 1.5.17.RELEASE)