Я не могу обновить таблицу с помощью Hibernate.Таблица создается с помощью следующего оператора и хранится в базе данных PostgreSQL.
CREATE TABLE staat
(
sta_id serial NOT NULL, -- ID des Staates
sta_bezeichnung character varying(50) NOT NULL, -- Langbezeichnung
sta_lkz character varying(10) NOT NULL, -- Laenderkennzeichen
sta_vorwahl character varying(10), -- Telefon Landesvorwahl
sta_eu boolean DEFAULT false, -- Ist der Staaat ein EU-Mitglied?
CONSTRAINT staat_pkey PRIMARY KEY (sta_id),
CONSTRAINT staat_sta_bezeichnung_key UNIQUE (sta_bezeichnung)
)
WITH (
OIDS=FALSE
);
Права установлены правильно, поскольку выбор, вставка и обновление возможны с помощью диспетчера SQL.Следующий оператор обновления также работает с SQL Manager.
Но теперь проблема: когда я хочу обновить таблицу с моим приложением, он генерирует PSQLException со следующими выходными данными: WARNUNG: Ошибка SQL: 0, SQLState:22004 и ОШИБКА: аргумент строки запроса EXECUTE имеет значение null
Исходный код:
Query q = s.createQuery("Update Staat set sta_bezeichnung = 'BlaBla' where sta_id = 1");
int status = q.executeUpdate();
Я думаю, что проблема связана со столбцами NOT NULL, потому что таблицы без столбцов NOT NULL могутобновиться с тем же исходным кодом ...
Кто-нибудь имеет представление о том, что не так или что я должен делать ???
Редактировать: пробовал с SQL (q.executeSQLUpdate)и HQL
Transaction tr = s.beginTransaction();
staat = (Staat)s.get(Staat.class, new Integer(0));
staat.setStaBezeichnung("BlaBla");
s.update(staat);
tr.commit();
Генерирует следующее сообщение об ошибке: ОШИБКА: аргумент строки запроса EXECUTE имеет значение NULL и не удалось синхронизировать состояние базы данных с сеансом
Edit2: обновление работает без спящего режима