1

我正在使用休眠注释。我想将一列设为自动递增。我在数据库(oracle)中创建了一个序列,并在 javaPOJO类中映射了该序列。我是否也需要为该序列创建触发器?我想知道我们如何在使用休眠注释时使列自动递增?我必须在 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

4 回答 4

1

This works for me:

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

no triggers in DB needed, just sequence.

于 2013-05-06T07:09:13.780 回答
0

尝试删除生成器并设置为自动生成类型

于 2013-05-06T06:44:39.347 回答
0
@Id @Column(name = "RUN_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
@SequenceGenerator(name="seq_run_id", sequenceName="seq_run_id")
private Long runId;

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

于 2013-05-06T07:38:03.227 回答
0
  1. 在 Oracle 中:不需要 Oracle 触发器,但顺序是必须的。

  2. 在 pojo: 你可以使用这样的注解:

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

于 2016-04-12T09:50:29.627 回答