【发布时间】:2011-10-06 14:58:16
【问题描述】:
我无法使用 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 管理器。
但现在的问题是:当我想用我的应用程序更新表时,它会生成带有以下输出的 PSQLException: 警告:SQL 错误:0,SQLState:22004 和错误:EXECUTE 的查询字符串参数为空
源代码:
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 的查询字符串参数为空并且无法将数据库状态与会话同步
Edit2:没有休眠的更新工作正常
【问题讨论】:
标签: sql hibernate postgresql