在學習《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
本文的解決方案完全參考自如下鏈接: