Я работаю над проектом весенней загрузки 2, в котором используется JPA, и нет файла application.properties, все свойства которого получены в виде строки от стороннего разработчика. Для использования источника данных, когда я использую DriverManagerDataSource в bean-компоненте источника данных, он прекрасно работает для извлечения данных. Но в производстве используется JNDI, поэтому, когда я изменяю код на JndiDataSourceLookup для WebLogi c server Datasource, он не может выполнить запрос JPA:
Сначала я хочу показать, что работает нормально:
@Bean(name = "dataSource" , destroyMethod = "")
public DataSource datasource() throws Exception {
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(apiofTridparty("driver"));
dataSource.setUrl(apiofTridparty("URL"));
dataSource.setUsername(apiofTridparty("username"));
dataSource.setPassword(apiofTridparty("pass"));
return dataSource;
}
После этого, когда я изменяю его на JNDI, например:
@Bean(name = "dataSource" , destroyMethod = "")
public DataSource datasource() throws Exception {
JndiDataSourceLookup lookup = new JndiDataSourceLookup();
return lookup.getDataSource(apiofTridparty("jndiname"));
}
Используя этот код выше при выполнении запроса, он говорит:
org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
My LocalContainerEntityManagerFactoryBean это:
@Primary
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean
entityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("dataSource") DataSource dataSource
) {
return builder
.dataSource(dataSource)
.packages("<package name>")
.persistenceUnit("<unit name>")
.build();
}
и менеджер транзакций:
@Primary
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("entityManagerFactory") EntityManagerFactory
entityManagerFactory
) {
return new JpaTransactionManager(entityManagerFactory);
}
Может кто-нибудь помочь мне в этом? Я новичок в weblogi c.