使用Hibernate注解时避免生成中间表
来源:互联网 发布:mac qq拼音登录 编辑:程序博客网 时间:2024/05/22 10:35
有两个实体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关联表了。
- 使用Hibernate注解时避免生成中间表
- hibernate 注解生成表
- hibernate使用annotation(注解)测试/生成数据库表
- 利用Hibernate注解生成表
- Hibernate中使用注解生成联合主键
- hibernate多对多中间表数据生成详解mappedBy
- hibernate多对多中间表数据生成详解mappedBy
- hibernate注解反向生成表结构
- hibernate注解,jpa注解根据类生成表
- JPA在@OneToMany里加入mappedBy属性避免生成中间表
- Hibernate注解使用以及Spring整合 , hibernate 自动生成uuid类型的id 注解
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
- hibernate中使用注解自动生成类对应的表的字段
- Hibernate注解方法使用主键生成策略@GeneratedValue(三)
- Myeclipse 10使用hibernate生成注解(annotation)实体类
- hibernate注解(annoation)使用id主键生成策略
- hibernate注解(annoation)使用id主键生成策略
- Hibernate 多对多 中间表含有其他字段 注解方式实现
- 消息使用的积累(不定期更新)
- AndroidGUI01:TextView的常用技巧
- Listener event
- Spring:JdbcTemplate使用指南
- vici mvc开发第十一篇——Embedded Resources(潜入资源)
- 使用Hibernate注解时避免生成中间表
- 转载:trunk、branches、tags
- [求教] - 关于ASP中如何对数据表字段中所包含的特殊字符 ' 与 " 进行转义处理?
- 保护模式下通过写显存在屏幕上输出字符串
- Position From Depth(2)
- zoj 2975 Kinds of Fuwas
- poj_3224 不解题意注定不解风情,此水题害苦了我
- 有失忆药么
- Fedora14设置sudo