ORA-00942:表或视图不存在:从以下位置更新Spring Boot之后 1.4.9至2.0.9,然后休眠至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_,Error Msg = ORA-00942: table or view does not exist
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498)
... 176 more