Estou com dúvida sobre mapeamentos!
Os dois trechos são de associações one to many, o primeiro exemplo é tirado deste link
http://www.xylax.net/hibernate/onetomany.html e representa o seguinte mapeamento:
Este é o código:
<class name="Foo" table="foo">
...
<set role="bars" table="bar">
<key column="foo_id"/>
<one-to-many class="Bar"/>
</set>
</class>
Já este outro exemplo faz a mesma coisa só que com tabelas diferentes, porém o mapeamento é de one-to-many:
Tabela cliente:
<class name='br.com.integrator.model.Cliente' table='clientes'>
...
<set inverse='true' name='pedido'>
<key column='clienteid_id' foreign-key='fk_pedidos_clienteid_key'/>
<one-to-many class='br.com.integrator.model.Pedido' />
</set>
Tabela pedido:
<class name='br.com.integrator.model.Pedido' table='pedidos'>
<id name='pedidoid' type='integer' column='pedidoid'>
<generator class='native' />
</id>
<set inverse='true' name='detalhesPedido'>
<key column='pedidoid_id' foreign-key='fk_detalhes_pedido_pedidoid_key'/>
<one-to-many class='br.com.integrator.model.DetalhesPedido' />
</set>
<many-to-one foreign-key='fk_pedidos_clienteid_id' column='clienteid' class='br.com.integrator.model.Cliente' name='cliente' />
<property column='datapedido' type='date' name='datapedido'>
</property>
</class>
O 2º exemplo foi feito no netbeans, exemplo do livro do edson gonçalves.
Não entendo porque os comandos são diferentes.
Qual a necessidade do exemplo 2 especificar essa foreign-key? O primeiro exemplo não especificou pq?
O primeiro exemplo faz o mapeamento tão simples, já no segundo se torna um tanto quanto complicado, por exemplo:
esse trecho:
essa fk… eu escrevo o que quiser? pois na no sql nao existe nenhuma chave com esse nome, fk_pedidos_cli…
[code]
CREATE TABLE clientes
(
ClienteID
char(5) NOT NULL,
nome
varchar(30) default NULL,
cargo
varchar(30) default NULL,
endereco
varchar(60) default NULL,
cidade
varchar(15) default NULL,
cep
varchar(10) default NULL,
pais
varchar(15) default NULL,
telefone
varchar(24) default NULL,
Fax
varchar(24) default NULL,
PRIMARY KEY (ClienteID
),
KEY cidade
(cidade
),
KEY cep
(cep
)
) [/code]
CREATE TABLE `pedidos` (
`PedidoID` int(11) NOT NULL auto_increment,
`ClienteID` char(5) default NULL,
`dataPedido` datetime default NULL,
PRIMARY KEY (`PedidoID`),
KEY `CustomerID` (`ClienteID`),
CONSTRAINT `fk_clientes` FOREIGN KEY (`ClienteID`) REFERENCES `clientes` (`ClienteID`)
)