在学习《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(此处请替换为你的数据库用户名对应的密码)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
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
”, 请调整项目代码的文件结构:
+-
example
+-
myproject
+-
Application.java
+-
domain
| +-
Customer.java
| +-
CustomerRepository.java
+-
service
| +-
CustomerService.java
+-
web
+- CustomerController.java
本文的解决方案完全参考自如下链接:
http://blog.csdn.net/lvyuan1234/article/details/65631176
每天学习一点点,不知不觉成大神~