Использование существующей последовательности базы данных и создание собственного генератора

Я создал последовательность в моей базе данных следующим образом:

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

Теперь я хочу добавить первые две буквы имени пользователя к номеру, созданному этой последовательностью, и генерировать идентификатор пользователя каждый раз, когда регистрируется новый пользователь, используя Hibernate. Как я могу это сделать?

2 ответа

Решение

Наконец-то нашел способ сделать это.

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 - это мой идентификатор последовательности.

Вам просто нужно использовать:

  • Функция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>
Другие вопросы по тегам