2007-11-14
用JoinColumn使用JPA的OneToMany不自动生成数据库表
有两个实体Order和Customer,一个用户可以有多个订单,一个订单属于一个用户,所以Customer与Order是一对多的关系,那么在Order实体里可以有一个到Customer的引用customer,同时在Customer里有一个Order实体的集合orders。如果在只是如下这样写:
public class Order { @id private long id; @ManyToOne private Customer customer; public void setId(long id) { this.id = id; } public long getId() { return this.id; } public void setCustomer(Customer customer) { this.customer = customer; } public Customer getCustomer() { return this.customer; } } public class Customer{ @id private long id; @OneToMany private Set<Order> orders; public void setId(long id) { this.id = id; } public long getId() { return this.id; } public void setOrders(Set<Order> orders) { this.orders = orders; } public Set<Order> getOrders() { return this.orders; } }
那么系统可能会自动生成一张Customer_Order关联表,可是事实上我们不需要这样的表,因为通过 Select order from Order order where order.customer.id=:id, 就可以找到某个Customer的Orders,而不需要另建一张表。要想去掉这个自动生成的表,要这样写:
public class Order { @id private long id; @ManyToOne @JoinColumn(name="customer", nullable=false) private Customer customer; public void setId(long id) { this.id = id; } public long getId() { return this.id; } public void setCustomer(Customer customer) { this.customer = customer; } public Customer getCustomer() { return this.customer; } } public class Customer{ @id private long id; @OneToMany(mappedBy="customer") private Set<Order> orders; public void setId(long id) { this.id = id; } public long getId() { return this.id; } public void setOrders(Set<Order> orders) { this.orders = orders; } public Set<Order> getOrders() { return this.orders; } }
多出一个mappedBy和JoinColumn, 就是告诉JPA实现者,orders是通过order里的customer映射来的,每次查找orders通过Order里的customer联接。这样就不会生成Customer_Order关联表了
发表评论
- 浏览: 3153 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
优化jboss以提高性能
为何看不全,只显示一部分呢!?
-- by lenhome -
优化richfaces,给seam提 ...
受教了 3Q~
-- by 40020072 -
用htmlparser解析google搜 ...
因为,没有配置java_home,或者可以再cmd下运行。
-- by water84222 -
用htmlparser解析google搜 ...
为什么,我下载后的只有filterbuilder.cmd,而且双击后,没有任何反 ...
-- by water84222 -
通过Annotation和Struts2 ...
d
-- by evonli






评论排行榜