我遇到这种情况,我需要在插入每个新记录时增加非主键列。此列不是主键。但它有独特的约束。如何使用Hibernate Annotations来完成此特定列的自动增量?我知道主键可以很容易地完成,但我想要非主键列完全相同的事情(意思是不使用@Id注释?)
- 由于
答案 0 :(得分:1)
据我所知,您可以使用Hibernate特定的注释@Generated
。你的领域看起来像这样:
@Generated(value="GenerationTime.INSERT")
@GenericGenerator(name="fieldGenerator", strategy="sequence")
private X field;
您可以阅读不同类型的策略here。
我90%肯定应该有效。如果没有,请告诉我。
答案 1 :(得分:1)
我检查过这个并且Hibernate只允许一个自动列(每个表),并且必须将其定义为键。
除了主键列之外如果您尝试使用多个自动列,您将收到错误:
[error] o.h.t.h.SchemaUpdate - 表定义不正确;只能有一个自动列,必须将其定义为键。
您可以使用序列或表格作为序列,并将返回值保存为seq。
表用作序列的简单示例:
@Entity(name = "T1")
@Table(name = "t1")
public class T1 {
@Id
@GeneratedValue
@Column(name = "c_id")
private Long seqId;
public Long getseqId() {
return seqId;
}
public void setseqId(Long sId) {
this.seqId= sId;
}
}
答案 2 :(得分:0)
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
它适用于我