мой код написан на Java, и я действительно новичок в Java, поэтому я надеюсь, что мои объяснения верны:
У меня есть веб-сервис, написанный на Java, который работает с базой данных.
Типы базы данных могут быть PostgreSQL и MySQL.
поэтому мой веб-сервис работает с соединением JDBC для обеих баз данных.
одна из моих таблиц базы данных - это таблицы URL,
для postgressql он создается так:
CREATE TABLE urls (
id serial NOT NULL primary key,
url text not null,
type integer not null);
для mysql это выглядит так:
CREATE TABLE IF NOT EXISTS URLS (
id INTEGER primary key NOT NULL AUTO_INCREMENT,
url varchar (1600) NOT NULL,
type INTEGER NOT NULL );
когда я пытаюсь вставить данные в эту таблицу, я использую сущность с именем urls:
эта сущность имеет:
private BigDecimal id;
private String url;
private BigInteger type;
Когда я пытаюсь вставить значения в таблицу URL-адресов, я присваиваю значения сущности URL-адресов, оставляя идентификатор как NULL, так как это AUTO_INCREMENT для mysql и serial для postgres.
запрос работает для моего sql, но не для postgress.
в журнале сервера postgres я вижу следующую ошибку:
null value in column "id" violates not-null constraint
потому что я посылаю NULL в качестве значения идентификатора.
Я обнаружил, что для того, чтобы запрос работал, я должен использовать этот запрос:
INSERT INTO URLS(ID, TYPE, URL) VALUES(DEFAULT, 1, 'DED'); or this one:
INSERT INTO URLS(TYPE, URL) VALUES(1, 'DED'); or this one:
вместо этого, который я использую:
INSERT INTO URLS(ID, TYPE, URL) VALUES(NULL, 1, 'DED');
так что мой вопрос,
- как мне присвоить значение DEFAULT значению BigDecimal в java?
- Является ли удаление идентификатора из моей сущности правильным способом?
- как я могу убедиться, что любые изменения, которые я делаю в своем коде, не повредят MySQL или любой другой базе данных, которую я буду использовать?