我在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>
有什么想法吗?我应该检查什么?我花了几个小时找到原因,但没有帮助:(
答案 0 :(得分:0)
它需要使用TB_ACCOUNTS而不是tb_accounts ...