Dúvida Híbernate: Mapeamento - Objeto Java x Campo do Banco de Dados (Solucionado)

7 respostas
ataufo

Pessoal,

acredito que seja algo símples, porém não consegui achar no fórum nenhum exemplo.

Como eu faço o mapeamento onde o campo no Modelo é um Objeto e no Banco é apenas uma foreign key ???

Agradeço qualquer ajuda !!!

Segue o exemplo abaixo:

Modelo:

public class Grupo implements Serializable
{
	private static final long serialVersionUID = 1L;
	
	private int id;
	private Destino dest;
	private Funcionario func;

                // Construtor, Gets, Sets...
}

Mapeamento:

<hibernate-mapping>
<class name="modelo.Grupo" table="grupo">
 <id name="id" column="id" type="integer">
   <generator class="sequence">
   <param name="sequence">grupo_id_seq</param>
   </generator>
 </id>
 
 <property name="dest" column="id_destino" type="string"/>  //Type ????????
 <property name="func" column="id_func" type="string"/>  //Type ????????
</class>

</hibernate-mapping>

Tabela grupo:

CREATE TABLE grupo
(
  id_func character varying(10) NOT NULL,
  id_destino character varying(15) NOT NULL,
  id serial NOT NULL,
  CONSTRAINT grupo_pk PRIMARY KEY (id),
  
CONSTRAINT grupo_destino_fk FOREIGN KEY (id_destino)
      REFERENCES destino (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,

  CONSTRAINT grupo_func_fk FOREIGN KEY (id_func)
      REFERENCES funcionario (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

7 Respostas

n3too

Retirado da própria documentação do hibernate:

foreign
utiliza o identificador de um outro objeto associado. Normalmente utilizado em conjunto com uma associação
primary key do tipo .

V

O grupo pode ter varios destinos e varios funcionarios ?
Se sim utilize <one-to-many>, se nao <one-to_one>

Caso nao consiga posta novamente q envio um exemplo.

B

Cara , ja pensou em usar annotations !?

1 - [google]www.google.com.br[/google]

2 - [google]http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/[/google]

Dois links q podem te dar um rumo , ficaria bem mais fácil pra vc mapear suas classes…

:!:

Begot

ataufo

Valeu pelas Respostas pessoal.

n3too: não entendi o que você quis dizer com essa definição…

begot: já pensei, mas não gosto muito e teria que alterar meu projeto todo, valeu.

vdb: onde eu utilizo o <one-to-many> ?? No lugar do <property > ?? Não consegui, pode me enviar um exemplo de como ficaria? Te agradeço mto.

Abç

V

Coloquei errado no outro post, é <many-to-one>… Segue o exemplo

&lt;many-to-one class="br.com.Destino" column="ID_DESTINO" lazy="false" name="dest" outer-join="true"/&gt;
&lt;many-to-one class="br.com.Funcionario" column="ID_FUNC" lazy="false" name="func" outer-join="true"/&gt;

name é o nome que vc declarou na classe grupo (private Destino dest;)

Colocando o many-to-one vc nao precisa colocar o property

ataufo

Vou tentar quando chegar em casa, obrigado.

só uma dúvida: como o mapeamento sabe que o name=“dest” que é um objeto do tipo Destino, corresponde ao id_destino. Por exemplo, eu sei que: dest.getId() tem valor correspondente á id_destino, mas como é identificado o valor onde name=“dest” corresponde a coluna id_destino ?

Entendeu a dúvida?

ataufo

Olha como o Hibernate entende eu não sei explicar, mas realmente funcinou o exemplo. Tópico solucionado !

Obrigado !!

Criado 12 de maio de 2009
Ultima resposta 13 de mai. de 2009
Respostas 7
Participantes 4