我使用Spring 4,並具有以下設置爲我的數據模型:如何自動生成使用Hibernate主鍵和H2數據庫
@Entity
@Table(name ="InstanceData")
public class InstanceData {
private Long instanceDataId;
private Long heapUsed; //in bytes
private Long heapMax; //in bytes
@Id
@Column(name="InstanceDataId")
@SequenceGenerator(name="DataSeq", sequenceName="DATA_SEQ")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="DataSeq")
public Long getInstanceDataId() {
return instanceDataId;
}
public void setInstanceDataId(Long id) {
this.instanceDataId = id;
}
@Column(name="HeapUsed")
public Long getHeapUsed() {
return this.heapUsed;
}
public void setHeapUsed(Long heapUsed) {
this.heapUsed = heapUsed;
}
@Column(name="HeapMax")
public Long getHeapMax() {
return this.heapMax;
}
public void setHeapMax(Long heapMax) {
this.heapMax = heapMax;
}
我讓Hibernate自動創建模式。然後我嘗試下面的SQL(在H2 db上):
insert into instance_data(heap_used,heap_max)values(100,100);
我得到的錯誤是:錯誤:NULL不允許列「INSTANCE_DATA_ID」; SQLState:23502
我的問題是爲什麼它不自動生成主鍵?我應該如何更改數據模型配置,以便自動生成主鍵(從1開始)?謝謝你的幫助。
我想了解爲什麼即使我使用@GeneratedValue批註,主鍵不會自動生成。
對,我可以從我的應用程序執行此操作。但我想預先填充數據庫用於測試的初始值,並希望在外部執行。我關心的是,當Hibernate創建模式時,如果主鍵設置爲自動增量,它不會正確創建它。 –