java - 升级到Spring boot 2.1.0 Data Jpa + Batch,遇到ORA-00942

标签 java spring hibernate spring-boot spring-data-jpa

我在升级到 Spring Boot 2.1.0 时遇到了问题,我正在使用 jpa + hibernate & 我的实体和存储库都很简单。

基本上我的代码可以在 Spring Boot 2.0.4 上运行,但是当升级 2.1.0 时(没有完成任何代码更改),我的存储库抛出了 ORA-00942 错误。我检查了两个版本的 hibernate 查询,它们看起来都一样。

我已阅读 changelog我没有看到任何可能导致该问题的原因。

我对这个问题感到困惑,欢迎任何建议!

我遇到的错误和设置如下

存储库设置:

package com.my.sample.app.dao

@Repository
public interface MyRepository extends CrudRepository<MyEntity, String> {
     MyEntity findTopByTypeOrderByStartTimeDesc(String type);
}

JPA相关配置:

package com.my.sample.app.configs

@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", basePackages = "com.my.sample.app.dao")
@EnableTransactionManagement
public class DatabaseConnectionConfig {

    @Bean
    @Primary
    @ConfigurationProperties(prefix = "my-datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "entityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
            DataSource dataSource) {
        Map<String, String> properties = new HashMap<>();
        properties.put("hibernate.dialect", "org.hibernate.dialect.OracleDialect");

        return builder.dataSource(dataSource).packages("com.my.sample.app.entity").persistenceUnit("my-jpa").properties(properties)
                .build();
    }

    @Primary
    @Bean(name = "myJpaTransactionManager")
    public PlatformTransactionManager transactionManager(
            @Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
    }
}

实体:

package com.my.sample.app.entity

@Entity
@Table(name = "AUDIT_TABLE")
public class AuditLog implements Serializable{
    private static final long serialVersionUID = 7862607645530582453L;
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy="uuid2")
    @Column(name = "AUDIT_ID")
    private String auditId;
    @Column(name = "TYPE")
    private String dataType;
    @Column(name = "START_TIME")
    private Date startTime;
    @Column(name = "END_TIME")
    private Date endTime;
    @Column(name = "STATUS")
    private String status;

    //getters & setters
}

遇到的错误:

2018-11-30 14:37:04.539  WARN 21616 --- o.h.engine.jdbc.spi.SqlExceptionHelper  : SQL Error: 942, SQLState: 42000
2018-11-30 14:37:04.539 ERROR 21616 --- o.h.engine.jdbc.spi.SqlExceptionHelper  : ORA-00942: table or view does not exist

属性文件:

my-datasource.jdbcUrl = jdbc:oracle:thin:@hostname:1521/service
my-datasource.username = username
my-datasource.password = password
my-datasource.driverClassName = oracle.jdbc.driver.OracleDriver

PS:该表确实存在,并且我的代码可以在 Spring Boot 2.0.4 版本上运行。不确定升级到 2.1.0 时出现了什么问题

最佳答案

尝试将属性文件更改为:

my-datasource.jdbcUrl = jdbc:oracle:thin:@hostname:1521:service

关于java - 升级到Spring boot 2.1.0 Data Jpa + Batch,遇到ORA-00942,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552808/

相关文章:

java - JPQL构造函数执行需要很长时间

java - Spring MVC :resources needs to map to the same filename?

java - 基于 Spring 配置文件的条件 JUnit 4 测试执行

java - JPA(Hibernate)与列表创建有序的一对多关系

mysql - Hibernate 不产生级联

java - selenium 3.0 webdriver for safari 10 on yosemite

java - BufferedImage 的边缘检测代码

带有 WebFlux 的 Spring Boot 总是在测试中抛出 403 状态

java - 如何在 Spring Batch Writer 中使用 Hibernate 无状态 session

java - 使用 retrofit2 时如何修复 "failed to connect"错误?