Вызывается: java.sql.SQLSyntaxErrorException: ORA-00942: таблица или представление не существует - PullRequest
0 голосов
/ 06 ноября 2019

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

1 Ответ

0 голосов
/ 06 ноября 2019

не удалось вставить комментарий, так как ваш запрос длинный, некоторые шаги отладки

  1. Подключение к базе данных с использованием SQL plus (oracle client) или Toad
  2. подключение с использованием QARMSV2 / QARMSV2
  3. Выполнен следующий запрос
  4. Если ваш запрос работает, выполните ту же программу, что и простая программа JDBC

выберите client0_.CLIENT_CODE в качестве CLIENT_CODE1_63_, client0_.createdAt как созданныйAt2_63_, client0_.createdBy в качестве созданногоBy3_63_, клиентский 0_.актив как активный4_63_, клиентский 0 как заявленный АА0, как клиент 0. approvedBy6_63_, client0_.modifiedAt, как modifiedAt7_63_, client0_.modifiedBy как modifiedBy8_63_, client0_.AREA как AREA9_63_, client0_.BUILDING как BUILDING10_63_, client0_.CATEGORY_CODE как CATEGORY_CODE11_63_, client0_.CITY как CITY12_63_, client0_.CLIENT_CREATED_FROM как CLIENT_CREATED_FR13_63_, client0_.CLIENT_TYPE как CLIENT_TYPE14_63_,client0_.COUNTRY as COUNTRY15_63_, client0_.EMAIL_IDа EMAIL_ID16_63_, client0_.IS_ERROR как IS_ERROR17_63_, client0_.FAX_NO как FAX_NO18_63_, client0_.FULL_NAME как FULL_NAME19_63_, client0_.GLOBAL_REF_ID как GLOBAL_REF_ID20_63_, client0_.id как id21_63_, client0_.MOBILE_NO как MOBILE_NO22_63_, client0_.NAME как NAME23_63_, client0_.PAN_NO как PAN_NO24_63_, client0_.IS_PARENT, как IS_PARENT25_63_, client0_.PARENT_CODE как PARENT_CODE26_63_, client0_.PHONE_NO как PHONE_NO27_63_, client0_.PIN_CODE как PIN_CODE28_63_, client0_.PRIORITY_TYPE как PRIORITY_TYPE29_63_, client0_.IS_PROP как IS_PROP30_63_, client0_.REMARK как REMARK31_63_, client0_.SEBI_REG_EXPIRY_DATE как SEBI_REG_EXPIRY_D32_63_, client0_.SEBI_REG_NO как SEBI_REG_NO33_63_, client0_.STATE как STATE34_63_, client0_.STREET как STREET35_63_, client0_.USER_ID как USER_ID36_63_ от клиента M_CLIENT0_

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...