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

时间:2018-11-30 07:06:22

标签: 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 错误。我检查了两个版本的休眠查询,它们看起来都一样。

我已阅读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时发生了什么

1 个答案:

答案 0 :(得分:0)

尝试将“属性”文件更改为:

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