Вызов следующего значения последовательности в jpa

Мне отобразили класс как Объект для сохранения его в базе данных. У меня есть идентификационное поле как первичный ключ так каждый раз, когда объект сохраняется, значение идентификатора получено от последовательности "myClass_pk_seq", код как следующий.

@Entity
@Table(name="myObjects")
public class MyClass {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
    @SequenceGenerator(name="sequence", sequenceName="myClass_pk_seq", allocationSize=1)
    @Column(name="myClassId")
    private Integer id;

    private Integer code;


    ...
}

Я должен сделать в атрибуте "кода" что-то подобное идентификатору. У меня должна быть последовательность, таким образом, я могу присвоить для кодирования следующего значения последовательности (для резервирования того значения в случае, если пользователь хочет зарезервировать его, но не сохраняя данные). Я подразумеваю, что пользователь будет видеть поле, если он не будет знать, что войти, он может нажать кнопку и receieve на экране следующее возможное значение (и он может или не принимать его). Как я могу получить следующее значение последовательности, определенной в JPA (и увеличить его значение), не сохраняя данные для не поля первичного ключа?

Я просто хочу иметь метод, которые называют nextval на последовательности связанным с полем "кода", и возвращает значение. Что лучший способ состоит в том, чтобы сделать это в JPA с аннотациями?

Спасибо.

6
задан Javi 18 June 2010 в 08:54
поделиться

1 ответ

Я просто хочу иметь метод, который вызывает nextval в последовательности, связанной с полем "code", и возвращает значение. Как лучше всего сделать это в JPA с аннотациями?

  • Используйте собственный SQL, чтобы получить следующее значение последовательности, когда пользователь нажимает кнопку. Либо создайте последовательность вручную, либо используйте «фальшивую сущность», чтобы JPA создала ее за вас.
  • Если вы не хотите использовать собственный SQL, вставьте объект, основанный на последовательности, и получите его идентификатор.

Оба решения звучат немного некрасиво. Возможно, вы могли бы просто использовать случайный генератор, такой как генератор UUID.

На самом деле вы ничего не упомянули об уникальности кода (и в аннотациях JPA не указано, что он должен быть уникальным). Почему бы вам не вернуть случайное целое число?

3
ответ дан 17 December 2019 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: