Hibernate - Mapeamento Bidirecional One-to-one - Problema quando salva

0 respostas
D

Eu tenho esse mapeamento bidirecional One-to-one, o probelma é quando salvo um usuario e a coluna usuario na tabela professor não atualiza o valor. O usuario é criado, o professor é atualizado mas a chave estrangeira usuario continua com o valor NULL.

Tabela Professor:

CREATE TABLE ppgcc.professor ( id_professor serial NOT NULL, nome character varying(45) NOT NULL, email character varying(45) NOT NULL, website character varying(45), usuario integer, CONSTRAINT professor_pkey PRIMARY KEY (id_professor), CONSTRAINT professor_usuario_fkey FOREIGN KEY (usuario) REFERENCES ppgcc.usuario (id_usuario) MATCH SIMPLE ON UPDATE CASCADE ON DELETE SET NULL, CONSTRAINT professor_usuario_key UNIQUE (usuario) )

Tabela Usuario:

CREATE TABLE ppgcc.usuario ( id_usuario serial NOT NULL, login character varying(45) NOT NULL, senha character varying(45) NOT NULL, acesso integer NOT NULL, CONSTRAINT usuario_pkey PRIMARY KEY (id_usuario), CONSTRAINT usuario_login_key UNIQUE (login) )

Mapeamento Professor:

<class name="Professor" schema="ppgcc" table="professor"> <id name="id" type="int" column="id_professor"> <generator class="identity"/> </id> <many-to-one name="usuario" class="Usuario" fetch="select" column="usuario" unique="true"/> <property name="nome" type="string" length="45" column="nome" not-null="true"/> <property name="email" type="string" length="45" column="email" not-null="true"/> <property name="website" type="string" length="45" column="website"/> </class>

Mapeamento Usuario:

<class name="Usuario" table="usuario" schema="ppgcc"> <id name="id" type="int" column="id_usuario"> <generator class="identity" /> </id> <property name="login" type="string" column="login" length="45" not-null="true" unique="true"/> <property name="senha" type="string" column="senha" length="45" not-null="true"/> <property name="acesso" type="int" column="acesso" not-null="true"/> <one-to-one name="professor" class="Professor" property-ref="usuario" cascade="save-update"/> </class>

Quando salvo um Usuario o Hibernate faz o seguinte:

Hibernate: insert into ppgcc.usuario (login, senha, acesso) values (?, ?, ?)
Hibernate: select currval(‘ppgcc.usuario_id_usuario_seq’)
Hibernate: update ppgcc.professor set usuario=?, nome=?, email=?, website=? where id_professor=?

O estranho é que ele atualiza o professor, mas na hora de pegar o id do usuario criado está vindo NULL.

Estou usando PostgreSQL.

Obrigado pela ajuda.

Criado 6 de março de 2011
Respostas 0
Participantes 1