Генератор последовательности: JAVA / JPA / SPRING - PullRequest
0 голосов
/ 05 сентября 2018

Вопрос : можно ли сгенерировать порядковый номер, не используя select someSequence from dual;

Проблема : @GeneratedValue и @SequenceGenerator по умолчанию использует select someSequence from dual; для получения следующего значения для моего идентификатора. Но у моего пользователя нет таких прав для выбора из двойной таблицы, поэтому я могу использовать только id = sequence.nextval, но я не знаю, как использовать это в классе Entity. Или как передать значение id в конструктор Entity, например sequence.nextval?

Использование: БД Oracle, метод CrudRepository, save ().

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Я думаю, вам нужно написать собственную стратегию и использовать аннотацию GenericGenerator. Этот ответ может быть полезен для вас: ссылка

0 голосов
/ 05 сентября 2018

Вам необходимо сначала создать последовательность в Oracle:

CREATE SEQUENCE USER_SEQUENCE START WITH 1 INCREMENT BY 10;

Затем прокомментируйте свой класс так:

@Entity
@SequenceGenerator(name="USER_SEQUENCE_GENERATOR", sequenceName="USER_SEQUENCE", initialValue=1, allocationSize=10)
public class User {
    @Id
    @Column(name="USER_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="USER_SEQUENCE_GENERATOR")
    private Long userId;
}
0 голосов
/ 05 сентября 2018

Вы можете вставить идентификатор с помощью запроса ниже:

select max(id) from <<tableName>>;

Если вы не можете выбрать из двойной таблицы, вы можете запросить собственную таблицу, найти максимальный идентификатор, увеличить его на 1 и назначить его в качестве нового идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...