通过一个表SEQUENCE:
--序列表
CREATE TABLE SEQUENCE (
SEQ_NAME VARCHAR2(50), /*序列名*/
SEQ_COUNT NUMBER(8,0) /*序列*/
)
/
代码如下:
@Entity
/*定义生成器,对应于SEQUENCE表中SEQ_NAME字段为user_seq的一行*/
@TableGenerator(name="USER_TABLE_GENERATOR",
table="SEQUENCE", pkColumnValue="user_seq",valueColumnName="SEQ_COUNT", pkColumnName="SEQ_NAME")
@NamedQueries({
@NamedQuery(name = "User.findAll", query = "select o from User o"),
@NamedQuery(name = "User.findByUserName",
query = "select o from User o where o.userName = :userName "),
@NamedQuery(name = "User.findByUserId",
query = "select o from User o where o.id = :id ")
})
@Table(name = "USERS")
public class User implements Serializable {
@Column(name="CANCEL_TIME")
private Timestamp cancelTime;
@Column(name="CREATE_TIME")
private Timestamp createTime;
@Id
/*引用生成器*/
@GeneratedValue(strategy=GenerationType.TABLE,generator="USER_TABLE_GENERATOR")
@Column(nullable = false)
private Long id;
.........
使用时请在SEQUENCE中添加相应的记录。