使用Hibernate自动增加一列

时间:2014-03-10 02:17:56

标签: hibernate annotations generator auto-increment strategy-pattern

我遇到这种情况,我需要在插入每个新记录时增加非主键列。此列不是主键。但它有独特的约束。如何使用Hibernate Annotations来完成此特定列的自动增量?我知道主键可以很容易地完成,但我想要非主键列完全相同的事情(意思是不使用@Id注释?)

- 由于

3 个答案:

答案 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;

它适用于我