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:
<class name="Foo" table="foo">
...
<set role="bars" table="bar">
<key column="foo_id"/>
<one-to-many class="Bar"/>
</set>
</class>
<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>
<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?
foreign-key='fk_pedidos_clienteid_key'
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`)
)
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`)
)
