使用现有数据库序列并创建自定义生成器

时间:2015-05-29 06:33:38

标签: oracle hibernate oracle11g sequence

我在数据库中创建了一个序列,如下所示:

CREATE SEQUENCE "SCOTT"."ATA_SEQ_USERID" 
MINVALUE 1 MAXVALUE 9999999999999999999999999999 
INCREMENT BY 1 START WITH 1000 CACHE 20 NOORDER NOCYCLE ;

现在,我希望将用户名的前两个字母附加到此序列创建的数字,并在每次新用户注册时使用Hibernate生成用户ID。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

你只需要使用:

  • SUBSTR 功能
  • 连接运算符 ||

例如,

SQL> CREATE SEQUENCE s;

Sequence created.

SQL>
SQL> SELECT substr(ename, 1, 2)||s.nextval custom_seq FROM emp;

CUSTOM_SEQ
------------------------------------------
SM1
AL2
WA3
JO4
MA5
BL6
CL7
SC8
KI9
TU10
AD11
JA12
FO13
MI14

14 rows selected.

SQL>

答案 1 :(得分:0)

终于找到了做到这一点的方法。

String sql = "select MY_SEQ_ID.nextval from dual";
        SQLQuery query = session.getCurrentSession().createSQLQuery(sql);
        List idList=query.list();
        BigDecimal number=(BigDecimal) idList.get(0);
        System.out.println(number);

其中MY_SEQ_ID是我的序列ID。