《spring boot》8.2章学习时无法正常启动,报“ORA-00942: 表或视图不存在 ”
在学习《spring boot》一书的过程中,由于原书作者难免有一些遗漏的的地方,或者系统、软件版本不一致、框架更新等各种因素,完全安装书中源码页不能实现项目的正常启动
在8.2章节,演示JPA对oracle的支持时,配置文件中设置了如下代码,正常情况下应该支持数据库自动创建序列和表,但实际启动时却报错“ORA-00942: 表或视图不存在 ”
spring.datasource.driverClassName=oracle.jdbc.OracleDriver spring.datasource.url=jdbc\:oracle\:thin\:@localhost\:1521\:xe spring.datasource.username=XXXXX(此处请替换为你的数据库用户名) spring.datasource.password=XXXXX(此处请替换为你的数据库用户名对应的密码) #1 spring.jpa.hibernate.ddl-auto=update #2 spring.jpa.show-sql=true #3 spring.jackson.serialization.indent-output=true
需要插入数据的data.sql:
insert into person(id,name,age,address) values(hibernate_sequence.nextval,xxx',32,'合肥'); insert into person(id,name,age,address) values(hibernate_sequence.nextval,'xx',31,'北京'); insert into person(id,name,age,address) values(hibernate_sequence.nextval,'yy',30,'上海'); insert into person(id,name,age,address) values(hibernate_sequence.nextval,'zz',29,'南京'); insert into person(id,name,age,address) values(hibernate_sequence.nextval,'aa',28,'武汉'); insert into person(id,name,age,address) values(hibernate_sequence.nextval,'bb',27,'合肥');
解决办法:
在src/main/resources下面在新建一个schema.sql,内容如下:
create sequence hibernate_sequence increment by 1 start with 1 maxvalue 999999999;
CREATE TABLE person (id NUMBER(5) PRIMARY KEY,name VARCHAR2(15) NOT NULL,age NUMBER(5),address VARCHAR2(15)) TABLESPACE your_table_space(此处替换为你登录的数据库账户对应的表空间,若还没有表空间,那你需要添加一行创建表空间的sql在这段代码的开头)
表空间可以在这里查看:
如果项目启动完成,访问页面出现“Whitelabel Error Page”, 请调整项目代码的文件结构:
com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web +- CustomerController.java
本文的解决方案完全参考自如下链接:
每天学习一点点,不知不觉成大神~