eclipse + JBoss 5 + EJB3开发指南(8) - 编程入门网
佛校训
其中@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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |