回答編集履歴
2
追記
answer
CHANGED
@@ -52,4 +52,25 @@
|
|
52
52
|
|
53
53
|
```
|
54
54
|
spring.jpa.database = POSTGRESQL
|
55
|
+
```
|
56
|
+
|
57
|
+
**追記(2020/07/24)**
|
58
|
+
|
59
|
+
```
|
60
|
+
org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [reserved_date] in table [reservable_room]; found [date (Types#DATE)], but expecting [timestamp (Types#TIMESTAMP)]
|
61
|
+
```
|
62
|
+
|
63
|
+
このエラーは`ReservableRoomId`クラスの`reservedDate`フィールドが`Date`型の場合に表示されました。
|
64
|
+
`ReservableRoomId`クラスのコードが下記のようになっている場合
|
65
|
+
|
66
|
+
```java
|
67
|
+
@Column
|
68
|
+
private Date reservedDate;
|
69
|
+
```
|
70
|
+
|
71
|
+
フィールドの型を`LocalDate`に変え(関連する箇所も)て確認してください。
|
72
|
+
|
73
|
+
```java
|
74
|
+
@Column
|
75
|
+
private LocalDate reservedDate;
|
55
76
|
```
|
1
修正
answer
CHANGED
@@ -5,22 +5,34 @@
|
|
5
5
|
> JPAベースのアプリでは、Hibernateにスキーマを作成させるか、schema.sqlを使用させるかを選択できますが、両方を行うことはできません。 schema.sqlを使用する場合は、必ずspring.jpa.hibernate.ddl-autoを無効にしてください。
|
6
6
|
|
7
7
|
上記に引用した通り、HiberanteとDatasourceを併用したデータベースの初期化はできません。
|
8
|
-
現在の設定では
|
9
8
|
|
10
|
-
|
9
|
+
**修正**
|
11
|
-
spring.jpa.hibernate.ddl-auto=validate
|
12
|
-
```
|
13
10
|
|
14
|
-
|
11
|
+
コメントが付いたので確認したところ、私の回答に誤りがありましたので訂正します。
|
12
|
+
下記内容を取り消し、改めて回答させて頂きます。
|
15
13
|
|
16
|
-
|
14
|
+
~~現在の設定では~~
|
17
15
|
|
16
|
+
~~spring.jpa.hibernate.ddl-auto=validate~~
|
18
17
|
|
18
|
+
~~としている(つまりHibernateを利用)ため、schema.sqlは読み込まれない状態です。~~
|
19
|
+
|
20
|
+
~~schema.sqlを読み込んでテーブルを作成したい場合は~~
|
21
|
+
|
22
|
+
~~spring.jpa.hibernate.ddl-auto = none~~
|
23
|
+
|
24
|
+
~~としてHibernateを使用せず、且つ下記を追加します。~~
|
25
|
+
|
26
|
+
**再回答**
|
27
|
+
|
28
|
+
下記の設定が有効だとschema.sqlが読み込まれないと回答しましたが、この設定があっても読み込みが行われ、`validate`の場合はエンティティクラスとデータベースとの整合性のチェックが行われます。
|
29
|
+
なお、他の設定値の`create`や`create-drop`でもschema.sqlの読み込みが行われますが整合性が担保できなくなる可能性が高いので併用は避けてください。
|
30
|
+
|
19
31
|
```
|
20
|
-
spring.jpa.hibernate.ddl-auto =
|
32
|
+
spring.jpa.hibernate.ddl-auto = validate
|
21
33
|
```
|
22
34
|
|
23
|
-
|
35
|
+
下記の行は訂正前と同様に必要で、この行がないとschema.sqlの読み込みは行われません。
|
24
36
|
|
25
37
|
```
|
26
38
|
spring.datasource.initialization-mode = always
|
@@ -34,7 +46,6 @@
|
|
34
46
|
|
35
47
|
デフォルト値は`embedded`なので、埋め込みDB(H2など)の場合のみ機能します。なのでPostgreSQLの場合は`always`として常に有効になるようにします。
|
36
48
|
|
37
|
-
|
38
49
|
**補足**
|
39
50
|
|
40
51
|
`spring.jpa.database`を下記のように設定していますが、このプロパティはSpring Bootによって自動検出されるので、明示する理由がなければ省略しておいた方がいいと思います。
|