【发布时间】:2016-03-08 14:38:12
【问题描述】:
我正在使用 Spring 4,并为我的数据模型设置了以下设置:
@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 上):
插入instance_data (heap_used, heap_max) 值(100, 100);
我得到的错误是:错误:NULL not allowed for column "INSTANCE_DATA_ID"; SQLState: 23502
我的问题是它为什么不自动生成主键?我应该如何更改我的数据模型配置以便自动生成主键(从 1 开始)?感谢您的帮助。
我想了解为什么即使我使用@GeneratedValue 注释,主键也不会自动生成。
【问题讨论】:
标签: java sql spring hibernate h2