Hibernate Mapping Auto number ใน Oracle ด้วย SEQUENCE
การสร้าง Field Auto number ใน Oracle นั้น ดูจะต้องมีขั้นตอนที่ยากกว่าใน Database อื่นๆ
ยกตัวอย่างเช่น Mysql ที่สามารถกำหนดเป็น Data type ได้เลย
แต่ของ Oracle ต้องเอามาผูกกับ SEQUENCE ก่อน
แล้วถ้าหากว่าเป็น Hibernate แล้วเราจะทำ Mapping ยังไงเพื่อให้ไปดึงเอา SEQUENCE มาทำ Auto Number ให้
ยกตัวอย่างเรามี field LOG_ID อยากให้เป็น Auto number โดยใช้ค่าจาก Sequence ที่ชื่อ LOG_SEQ มาใส่ให้
ในทุกๆครั้งที่ Insert แบบอัตโนมัติโดยที่เราไม่ต้องไปดึง Sequence จาก Oracle มา Set ใส่ตัวแปรเอง
@Id
@SequenceGenerator(name="log_seq",sequenceName="LOG_SEQ")
@GeneratedValue(strategy=GenerationType.AUTO, generator="log_seq")
@Column(name = "LOG_ID", unique = true, nullable = false)
private Long logId;
ตามนี้เลยคับ Script ข้างในจะไปทำการ ดึง next val มาให้ เหมือนคำสั่งนี้เลยครับ
select LOG_SEQ.nextval from dual;