Vini_Fernandes 13 de out. de 2009
Cara, tenho uma situacao semelhante onde um Usuario do meu sistema pode ter N Promocoes e uma Promocao pode ter N Usuario. Veja como fiz as tabelas:
create table usuario (
id numeric ( 7 ) not null ,
nome varchar ( 30 ) not null ,
email varchar ( 60 ) default null ,
endereco varchar ( 120 ) not null ,
telefone varchar ( 15 ) not null ,
// outros campos
constraint fk_idusuario1 foreign key ( idgrupo ) references grupo ( id )
);
create table promocao (
id numeric ( 7 ) not null ,
descricao varchar ( 60 ) not null ,
primary key ( id ),
unique key ( descricao )
);
// aqui eh definida a join table
create table promocao_usuario (
idpromocao numeric ( 7 ) not null ,
idusuario numeric ( 7 ) not null ,
constraint fk_promocaocliente1 foreign key ( idpromocao ) references promocao ( id ),
constraint fk_promocaocliente2 foreign key ( idusuario ) references usuario ( id )
);
Agora os arquivos de mapeamento:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name= "br.com.vinicius.locadora.modelo.bean.Usuario" table= "usuario" >
<id name= "id" column= "id" >
<generator class= "increment" />
</id>
<property name= "nome" not-null= "true" />
<property name= "email" />
<property name= "endereco" />
//outros campos
//mapeamento n:n das promocoes
<bag name= "listaPromocao" table= "promocao_usuario" >
<key column= "idusuario" />
<many-to-many class= "br.com.vinicius.locadora.modelo.bean.Promocao" column= "idpromocao" />
</bag>
</class>
</hibernate-mapping>
Arquivo de mapeamento da Promocao
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name= "br.com.vinicius.locadora.modelo.bean.Promocao" table= "PROMOCAO" >
<id name= "id" column= "id" >
<generator class= "increment" />
</id>
<property name= "descricao" />
//mapeando n:n dos usuarios
<bag name= "listaUsuario" table= "promocao_usuario" >
<key column= "idpromocao" />
<many-to-many class= "br.com.vinicius.locadora.modelo.bean.Usuario" column= "idusuario" />
</bag>
</class>
</hibernate-mapping>
Espero ter ajudado