弹簧数据和ORA-00942:表或视图不存在

时间:2018-09-15 19:40:04

标签: spring oracle spring-data

我在Spring Data和Oracle 12数据库方面遇到了有趣的问题

我知道了

  

java.sql.SQLSyntaxErrorException:
   ORA-00942 表或视图不   存在

但是当我使用JdbcTemplate时它可以工作! Spring数据和JdbcTemplate使用相同的dataSource。 Liquibase迁移也可以正常工作

我尝试将模式用于模型,但没有运气。

@Getter
@Setter
@Entity
@Table(name = "tb_accounts", schema = "rx")
public class CustomerAccount {

   @Id
   @Column(name = "id")
   private String id;

   private String accountNo;
}

@Repository
public interface CustomerAccountRepository extends JpaRepository<CustomerAccount, String> {

}

但是正如我所说的,它可以与JdbcTemplate一起使用

@Repository
public class CustomerAccountDao {

    @Autowired
    private DataSource dataSource;

    private JdbcTemplate jdbcTemplate;

    @PostConstruct
    private void postConstruct() {
        jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public List<CustomerAccount> findAll() {
    return jdbcTemplate.query("select * from tb_accounts", (rs, i) -> {

        CustomerAccount account = new CustomerAccount();
        account.setId(rs.getString("id"));

        return account;
    });
}

迁移文件

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">

    <changeSet id="1" author="user1">
        <createTable tableName="tb_accounts">
            <column name="id" type="VARCHAR(256)">
                <constraints primaryKey="true"/>
            </column>
            <column name="accountNo" type="VARCHAR(256)"/>

        </createTable>

    </changeSet>

</databaseChangeLog>

有什么想法吗?我应该检查什么?我花了几个小时找到原因,但没有帮助:(

1 个答案:

答案 0 :(得分:0)

它需要使用TB_ACCOUNTS而不是tb_accounts ...