我有一個Spring Boot應用程序。我使用Postgres數據庫,並希望使用H2數據庫。@DynamicInsert在使用H2數據庫時無法識別
我的SQL模式看起來像這樣
CREATE SEQUENCE car_id_seq START WITH 100;
CREATE TABLE car (
id INTEGER DEFAULT nextval('car_id_seq') PRIMARY KEY,
name VARCHAR NOT NULL UNIQUE,
content VARCHAR NOT NULL
);
我的車實體看起來像這樣
@Entity @DynamicInsert @DynamicUpdate
@Getter @Setter //lombok
public class Car {
@Column @Access(AccessType.PROPERTY)
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column private String name;
@Column private String content;
}
現在我試着堅持一個實例。使用Postgres-Db一切都很好。關鍵在於必須調用insert語句而不傳遞id的值。啓用日誌後,我可以看到這條語句insert into Car (name, content) values (?, ?)
。
現在,當我改爲H2時,我非常驚訝地發現完全相同的代碼會產生以下sql語句insert into Car (name, content, id) values (?, ?, null)
。這裏的ID傳遞值爲null
。這當然會導致一個NULL not allowed for column "ID"; SQL statement
-exception。
爲什麼會有不同的行爲,我該如何解決@DynamicInsert(和@DynamicUpdate)是否正在工作。
的PostgreSQL 9.5.3,com.h2database:H2:1.4.193,春天引導1.4.2.RELEASE,休眠5.0.11.Final