spring 引导不从已配置的外部 oracle 数据库中获取数据

spring boot not fetching data from external oracle database configured

我想用 spring boot2 配置 oracle 数据库。 我已经成功开发了 dao 层代码并使用嵌入式 H2 数据库进行了单元测试。但是现在当我在 applicaiton.yaml 文件中提供数据源配置详细信息时,它无法从外部 oracle 数据库中检索数据。未显示任何错误。

这是我的配置

pom.xml

<!-- https://mvnrepository.com/artifact/org.eclipse.persistence/eclipselink -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.5.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <!-- <scope>runtime</scope> -->
        </dependency>

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc</artifactId>
            <version>11.2.0.3</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systemPath>
        </dependency>

服务层:

@Autowired
SampleActivityLogRepository repository;

//inside a method
Optional<List<SampleActivityLog>> listOfActivityForToken = repository.findLogByAccNoandTokenIDOrderByDate(userId, example.getKey());

存储库层:

@Repository
@Transactional
public interface SampleActivityLogRepository extends JpaRepository<SampleActivityLog, Long> {

    @Query("SELECT L FROM SampleActivityLog L WHERE L.accountId = ?1 AND L.userId = ?2 ORDER BY L.createdDate desc")
    Optional<List<SampleActivityLog>> findLogByAccNoandTokenIDOrderByDate(String accNo, String userId);
}

application.yaml:

spring:
  profiles: dev

logging:
  level:
    org.springframework: ERROR
    com.example.rest.Tokennotification: DEBUG

  datasource:
    url: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = example.com)(PORT = 1875))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = sit)))
    username: mvcschenam
    password: supportab
    driverClassName: oracle.jdbc.OracleDriver
  jpa:
    database-platform: org.hibernate.dialect.Oracle10gDialect
    database: H2
    #openInView: false
    show_sql: true
    generate-ddl: false

我尝试过的:

  1. 我已经从 pom.xml 中删除了 h2 依赖项。但它抛出错误 no 'url' configured for datasource

  2. 我尝试使用@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 删除自动配置 但是它抛出了错误,SampleActivityLogRepository 只是一个接口.. 需要实现。但是我在这里看不到太多逻辑..因为相同的代码在连接到引导集成数据库时起作用

我需要连接到外部数据库,但我不确定我缺少什么。我不想更改我的代码,因为我相信它非常整洁并且也可以正常工作。 请指导我在这里可以做什么。提前致谢

尝试将您的 yml 更改为:

spring:
  profiles: dev

  logging:
    level:
      org.springframework: ERROR
      com.example.rest.Tokennotification: DEBUG

  datasource:
    url: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = example.com)(PORT = 1875))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = sit)))
    username: mvcschenam
    password: supportab
    driverClassName: oracle.jdbc.OracleDriver
  jpa:
    database-platform: org.hibernate.dialect.Oracle10gDialect
    database: H2
    #openInView: false
    show_sql: true
    generate-ddl: false

您的数据源和 jpa 似乎在日志记录节点下,而不是 spring