ORA-00942: таблица или представление не существует: после обновления Spring Boot с 1.4.9 до 2.0.9 и Hibernate до 5.2.18.FINAL
КОГДА я использую черезМенеджер сущностей работает, но когда я пытаюсь получить его через репозиторий JPA, он выдает эту ошибку. Кто-нибудь мне поможет?
Я использовал следующие зависимости
<hibernate.version>5.2.18.Final</hibernate.version>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.0.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.0.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
<scope>compile</scope>
</dependency>
Мой JPAConfig.java
@ConditionalOnProperty(name = "embedded", havingValue = "true",
matchIfMissing = true)
@Configuration
@RefreshScope
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory",
transactionManagerRef = "transactionManager", basePackages = {
"kgfsl" })
public class JPAConfig {
@Bean
public Validator getValidator() {
return new LocalValidatorFactoryBean();
}
@Value("${db.url}")
String dbUrl = "jdbc:oracle:thin:@10.100.1.95:1539:HFSL12C";
@Value("${db.driverClassName}")
String dbDriverClassName = "oracle.jdbc.driver.OracleDriver";
@Value("${db.userName}")
String dbUserName = "QARMSV2";
@Value("${db.password}")
String dbPassword = "QARMSV2";
@Value("${db.databaseType}")
String dbDatabaseType = "Oracle";
@Value("${encryptionOn:false}")
private boolean encryptionOn;
@Bean
@Primary
@RefreshScope
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(dbDriverClassName);
dataSource.setUrl(dbUrl);
dataSource.setUsername(dbUserName);
if (encryptionOn)
dataSource.setPassword(CryptoUtil.decrypt(dbPassword));
else
dataSource.setPassword(dbPassword);
return dataSource;
}
@Bean
@Primary
@RefreshScope
public Map<String, Object> jpaProperties() {
Map<String, Object> props = new HashMap<>();
props.put("hibernate.dialect",
ApplicationStartUpFactory.getDialect(dbDatabaseType));
props.put("javax.persistence.validation.mode", "none");
props.put("hibernate.id.new_generator_mappings", "false");
//props.put("hibernate.physical_naming_strategy",
"org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl");
//
props.put("hibernate.ejb.interceptor",
"kgfsl.framework.config.AuditColumnWiseInterceptor");
return props;
}
public static int batchSize() {
return Integer.valueOf(Dialect.DEFAULT_BATCH_SIZE);
}
@Primary
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new
HibernateJpaVendorAdapter();
hibernateJpaVendorAdapter.setShowSql(true);
hibernateJpaVendorAdapter.setGenerateDdl(false);
hibernateJpaVendorAdapter.
setDatabase(ApplicationStartUpFactory.getJPAVendor(dbDatabaseType));
return hibernateJpaVendorAdapter;
}
@Primary
@Bean
public PlatformTransactionManager transactionManager() {
return new
JpaTransactionManager(entityManagerFactory().getObject());
}
@Bean
@Primary
public LocalContainerEntityManagerFactoryBean
entityManagerFactory() {
LocalContainerEntityManagerFactoryBean lef = new
LocalContainerEntityManagerFactoryBean();
lef.setDataSource(this.dataSource());
lef.setJpaPropertyMap(this.jpaProperties());
lef.setJpaVendorAdapter(this.jpaVendorAdapter());
// lef.setPackagesToScan("hfsl");
String entityPackages = "hfsl.*.*";
lef.setPackagesToScan(entityPackages.split(","));
lef.setPersistenceUnitName("default"); // <- giving 'default'
as name
return lef;
}
@Bean()
@Qualifier("jdbcTemplate")
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(this.dataSource());
}
@Bean(name = "namedParameterJdbcTemplate")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(this.dataSource());
}
@SuppressWarnings("unused")
private DatabasePopulator createDatabasePopulator() {
ResourceDatabasePopulator databasePopulator = new
ResourceDatabasePopulator();
databasePopulator.setContinueOnError(false);
/*
* if (new ClassPathResource("basic_table.sql").exists())
* databasePopulator.addScript(new
ClassPathResource("basic_table.sql"));
*/
return databasePopulator;
}
@Bean
@Primary
public PhysicalNamingStrategy physical() {
return new PhysicalNamingStrategyStandardImpl();
}
@Bean
@Primary
public ImplicitNamingStrategy implicit() {
return new ImplicitNamingStrategyLegacyJpaImpl ();
}
}
У меня следующая ошибка:
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1054)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612)
at
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:747)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:904)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1082)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780)
at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3822)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1165)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)
... 161 more
Caused by: Error : 942, Position : 1387, Sql = select client0_.CLIENT_CODE as CLIENT_CODE1_63_, client0_.createdAt as createdAt2_63_, client0_.createdBy as createdBy3_63_, client0_.active as active4_63_, client0_.approvedAt as approvedAt5_63_, client0_.approvedBy as approvedBy6_63_, client0_.modifiedAt as modifiedAt7_63_, client0_.modifiedBy as modifiedBy8_63_, client0_.AREA as AREA9_63_, client0_.BUILDING as BUILDING10_63_, client0_.CATEGORY_CODE as CATEGORY_CODE11_63_, client0_.CITY as CITY12_63_, client0_.CLIENT_CREATED_FROM as CLIENT_CREATED_FR13_63_, client0_.CLIENT_TYPE as CLIENT_TYPE14_63_, client0_.COUNTRY as COUNTRY15_63_, client0_.EMAIL_ID as EMAIL_ID16_63_, client0_.IS_ERROR as IS_ERROR17_63_, client0_.FAX_NO as FAX_NO18_63_, client0_.FULL_NAME as FULL_NAME19_63_, client0_.GLOBAL_REF_ID as GLOBAL_REF_ID20_63_, client0_.id as id21_63_, client0_.MOBILE_NO as MOBILE_NO22_63_, client0_.NAME as NAME23_63_, client0_.PAN_NO as PAN_NO24_63_, client0_.IS_PARENT as IS_PARENT25_63_, client0_.PARENT_CODE as PARENT_CODE26_63_, client0_.PHONE_NO as PHONE_NO27_63_, client0_.PIN_CODE as PIN_CODE28_63_, client0_.PRIORITY_TYPE as PRIORITY_TYPE29_63_, client0_.IS_PROP as IS_PROP30_63_, client0_.REMARK as REMARK31_63_, client0_.SEBI_REG_EXPIRY_DATE as SEBI_REG_EXPIRY_D32_63_, client0_.SEBI_REG_NO as SEBI_REG_NO33_63_, client0_.STATE as STATE34_63_, client0_.STREET as STREET35_63_, client0_.USER_ID as USER_ID36_63_ from M_CLIENT client0_, OriginalSql = select client0_.CLIENT_CODE as CLIENT_CODE1_63_, client0_.createdAt as createdAt2_63_, client0_.createdBy as createdBy3_63_, client0_.active as active4_63_, client0_.approvedAt as approvedAt5_63_, client0_.approvedBy as approvedBy6_63_, client0_.modifiedAt as modifiedAt7_63_, client0_.modifiedBy as modifiedBy8_63_, client0_.AREA as AREA9_63_, client0_.BUILDING as BUILDING10_63_, client0_.CATEGORY_CODE as CATEGORY_CODE11_63_, client0_.CITY as CITY12_63_, client0_.CLIENT_CREATED_FROM as CLIENT_CREATED_FR13_63_, client0_.CLIENT_TYPE as CLIENT_TYPE14_63_, client0_.COUNTRY as COUNTRY15_63_, client0_.EMAIL_ID as EMAIL_ID16_63_, client0_.IS_ERROR as IS_ERROR17_63_, client0_.FAX_NO as FAX_NO18_63_, client0_.FULL_NAME as FULL_NAME19_63_, client0_.GLOBAL_REF_ID as GLOBAL_REF_ID20_63_, client0_.id as id21_63_, client0_.MOBILE_NO as MOBILE_NO22_63_, client0_.NAME as NAME23_63_, client0_.PAN_NO as PAN_NO24_63_, client0_.IS_PARENT as IS_PARENT25_63_, client0_.PARENT_CODE as PARENT_CODE26_63_, client0_.PHONE_NO as PHONE_NO27_63_, client0_.PIN_CODE as PIN_CODE28_63_, client0_.PRIORITY_TYPE as PRIORITY_TYPE29_63_, client0_.IS_PROP as IS_PROP30_63_, client0_.REMARK as REMARK31_63_, client0_.SEBI_REG_EXPIRY_DATE as SEBI_REG_EXPIRY_D32_63_, client0_.SEBI_REG_NO as SEBI_REG_NO33_63_, client0_.STATE as STATE34_63_, client0_.STREET as STREET35_63_, client0_.USER_ID as USER_ID36_63_ from M_CLIENT client0_, Error Msg = ORA-00942: table or view does not exist
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498)
... 176 more