我使用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创建模式时,如果主键设置为自动增量,它不会正确创建它。 –