jpa, где сохраняется сгенерированное значение / как его увеличить

Я только что вошел в проект, который использует Spring для сохранения всего. Для столбца идентификатора используется @GeneratedValue. Я импортировал данные из другой базы данных с помощью SQL, и теперь автоматически увеличенное сгенерированное значение не синхронизировано.

Серверная часть, использующая Spring, работает на сервере Java Web Tomcat 7, который работает на облачной платформе HANA.

Кто-нибудь знает, где он сохраняет это сгенерированное значение и как его увеличить, чтобы он использовал идентификаторы выше тех, которые я вставил через SQL?

Большое спасибо и с уважением, tietze111

РЕДАКТИРОВАТЬ: мы используем базу данных HANA, и вот некоторый код, надеюсь, это то, что вы ищете:

public abstract class AbstractModel<ID extends Serializable> implements Serializable {

private static final long serialVersionUID = -3275552243704225648L;

@Id
@GeneratedValue
@JsonView(View.Summary.class)
protected ID id;
[...]

подсказка о затмении

РЕДАКТИРОВАТЬ 2 (дополнительная информация, не знаю, полезно ли это?): Мы используем спящий режим, но проблема в том, что последовательность не отображается в системе. Существует таблица с именем SEQUENCE, но она имеет фиксированный атрибут SEQ_COUNT. Его значение всегда равно 50. Атрибут SEQ_NAME имеет значение "SEQ_GEN". В таблице всего 1 запись. Вот как выглядит определение этого. На картинке также видно, что последовательности нет.

РЕШЕНИЕ. Нашел эту цепочку в stackoverflow и изменил стратегию генерации на GenerationType. .СТОЛ . Теперь я смог легко изменить идентификатор в таблице.


person tietze111    schedule 11.07.2016    source источник
comment
Какую систему баз данных вы используете?   -  person Akashdeep Saluja    schedule 11.07.2016
comment
Это зависит от типа генератора. Разместите код.   -  person dunni    schedule 11.07.2016
comment
Добавил кое-что в пост, надеюсь, это то, о чем вы просили. Спасибо за быстрый ответ!   -  person tietze111    schedule 11.07.2016
comment
поскольку вы не указали стратегию генератора, вы предоставляете решение поставщику JPA ... и, следовательно, можете выбрать то, что вам не нужно. Лучше указать стратегию ... IDENTITY, SEQUENCE, TABLE и т. д. Любой документ JPA расскажет вам, как   -  person Neil Stockton    schedule 12.07.2016
comment
Спасибо, Нил Стоктон, нашел решение благодаря вашему комментарию!   -  person tietze111    schedule 14.07.2016


Ответы (2)


Нашел эту тему о значении стратегий генерации в stackoverflow и изменил стратегия генерации для GenerationType.TABLE . Теперь я смог легко изменить идентификатор в таблице.

Спасибо Нилу Стоктону, чей комментарий привел меня в этом направлении!

person tietze111    schedule 13.07.2016

Это действительно вопрос SQL/DDL.

Вам нужно посмотреть DDL вашей базы данных и выяснить, что такое имя последовательности. Затем вам придется обновить высокое значение. Имя по умолчанию в hibernate — hibernate_sequence, но оно может отличаться в зависимости от поставщика JPA.

alter sequence <sequence name> restart with <new starting value>;

Если вы используете столбец auto_increment, вы обновляете его, изменяя таблицу. См. http://www.tutorialspoint.com/sap_hana/sap_hana_sql_sequences.htm.

person JudgingNotJudging    schedule 11.07.2016
comment
Спасибо за ответ, но проблема заключалась в том, что в каталоге не было создано ни последовательности, ни таблицы, как я ожидал, поэтому я не мог сделать то, что вы предложили. - person tietze111; 14.07.2016