2016-07-11 6 views
0

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

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

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

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

EDIT: Мы используем базу данных 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; 
[...] 

eclipse tooltip

EDIT 2 (дополнительная информация, не знаю, если это полезно?): Мы используем спящий режим, но проблема в том, что последовательность не отображается в системе. Существует таблица, называемая SEQUENCE, но имеет только фиксированный атрибут SEQ_COUNT. Значение всегда 50. Атрибут SEQ_NAME имеет значение «SEQ_GEN». Таблица имеет только 1 запись. Вот как выглядит определение this. На рисунке также показано, что последовательности нет.

РЕШЕНИЕ: Найдено this thread в stackoverflow и изменил стратегию генерации на GenerationType.TABLE. Теперь мне удалось легко изменить идентификатор в таблице.

+0

Какая система баз данных вы используете? –

+0

Это зависит от типа генератора. Поместите некоторый код. – dunni

+0

Добавил некоторые вещи в сообщение, надеюсь, это было то, о чем вы просили. Спасибо за быстрый ответ! – tietze111

ответ

1

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

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

0

Это действительно вопрос 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

+0

Спасибо за ответ, но проблема заключалась в том, что в каталоге не было ни последовательности, ни таблицы, как я бы ожидал, поэтому я не мог делать то, что вы предлагали. – tietze111