快速业务通道

eclipse + JBoss 5 + EJB3开发指南(8) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
佛校训

其中@JoinColumn注释的name属性指定t_orders表中用于连接t_customers表的外键名。

可以使用下面的代码进行测试:

Customer customer = new Customer();

    customer.setName("微软");

    List<Order> orders = new ArrayList<Order>();

    Order order =new Order();

    order.setProductId("1234");

    order.setCount(20);

    order.setCustomer(customer);

    orders.add(order);

    order = new Order();

    order.setProductId("4321");

    order.setCount(12);

    order.setCustomer(customer);

    orders.add(order);

    customer.setOrders(orders);

    em.persist(customer);

除此之外,还可以使用@JoinTable指定连接表来映射one-to-many关系。连接表的结构如图2所示。

图2  t_customers_orders表

首选需要将Customer类的getOrders方法修改成下的形式:

@OneToMany

    @JoinTable(name = "t_customers_orders", joinColumns = @JoinColumn(name = 

"t_customers_id", 

             referencedColumnName = "id"), inverseJoinColumns =

                  @JoinColumn(name = "orders_id", referencedColumnName = 

"id"))

    public Collection<Order> getOrders()

    {

        return orders;

    }

其中name属性指定图2所示的连接表的名称。joinColumns指定了t_customers表和t_customers_orders 表中相连接的字段。inverseJoinColumns指定了t_orders表和t_customers_orders表中相连接的字段。这 时t_orders表中的customer_id字段就不再需要了。因此,需要将Order表中的customer属性(getter和 setter方法)去掉。

在持久化Customer和Order对象时,需要对Order对象进行持久化后才能对Customer对象进行持久化。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号