Как сделать так, чтобы db обрабатывал автоматически вставляемый идентификатор последовательности postgesql - PullRequest
0 голосов
/ 29 ноября 2018

У меня был существующий объект (TableEntity.java), таблица существовала в дБ, а также данные. Вот как идентификатор столбца уже удален в TableEntity.java

@Id
@SequenceGenerator(name = "table_name_id_seq", sequenceName = "table_name_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "table_name_id_seq")
@Column(name = "id", nullable = false, updateable = false)
private int id;

В базе данных япосмотрите на свойства таблицы, для столбца id тип данных int и установлен как Not NULL. Предыдущий код для вставки данных в db выполняет только repository.save (), но теперь я хочу использовать PreparedStatementвставить данные в дБ для пакета Вот как я создаю запрос

String query = "INSERT INTO table_name (column1, column2) values (?, ?)";

. Проблема в том, что при выполнении запроса он нарушает нулевое ограничение для столбца id.Как сделать так, чтобы база данных могла обрабатывать мой идентификатор столбца?Поскольку, когда я просто использую repository.save (), это нормально, но когда я использую этот запрос (могу ли я сказать, что это нативный запрос?), Появляется это исключение.Как это решить?или любая ссылка для решения этой проблемы?

1 Ответ

0 голосов
/ 29 ноября 2018

Установить значение по умолчанию для столбца:

alter table table_name
   alter column id set default nextval('table_name_id_seq');

Теперь, если инструкция INSERT не предоставляет значение для столбца id (не упоминая его), следующее значение последовательности используется длязаполните колонку.

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