使用hibernate在oracle中自动增量列

时间:2013-05-06 06:40:09

标签: java hibernate

我正在使用hibernate注释。我想将列作为自动增量。我在数据库(oracle)中创建了一个序列,并在java POJO类中映射了该序列。我是否还需要为该序列创建触发器?我想知道在使用hibernate anotation时如何使列自动增量?我在java和数据库方面需要做些什么改变?请帮帮我。以下是我已映射序列的代码部分。

public class SimRuns implements Serializable {

    private static final long serialVersionUID = 8698324570356602407L;

    @Id @Column(name = "RUN_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_run_id")
    @SequenceGenerator(name="seq_run_id", sequenceName="seq_run_id")
    private Long runId;
}

4 个答案:

答案 0 :(得分:1)

这对我有用:

@Id
@GeneratedValue(generator = "nosicSeq")
@SequenceGenerator(name = "nosicSeq", sequenceName = "NOSIC_SEQ", allocationSize = 1)
@Column(name = "SID")
private BigDecimal sid;

不需要DB中的触发器,只需要序列。

答案 1 :(得分:0)

尝试删除生成器并设置为auto generationType

答案 2 :(得分:0)

@Id @Column(name = "RUN_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
@SequenceGenerator(name="seq_run_id", sequenceName="seq_run_id")
private Long runId;

Hibernate可能是唯一一个根据您的数据库类型选择正确的Generationstrategy的JPA Provider。使用GenerationType.AUTO语句,hibernate将尝试选择实现增加行id的最佳策略。

答案 3 :(得分:0)

  1. 在Oracle中:它不需要Oracle触发器,但顺序是必须的。

  2. 在pojo中:您可以使用这样的注释: 的

    @Id @GeneratedValue(strategy = GenerationType.SEQUENCE,generator =" majorsSeq") @SequenceGenerator(name =" majorsSeq&#34 ;, sequenceName =" MAJORS_SEQ",allocationSize = 1,initialValue = 1) public int getId(){     返回id; }