我正在使用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;
}
答案 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)
在Oracle中:它不需要Oracle触发器,但顺序是必须的。
在pojo中:您可以使用这样的注释: 的 的
的@Id @GeneratedValue(strategy = GenerationType.SEQUENCE,generator =" majorsSeq") @SequenceGenerator(name =" majorsSeq&#34 ;, sequenceName =" MAJORS_SEQ",allocationSize = 1,initialValue = 1) public int getId(){ 返回id; }
的的