Hibernate 使用 Annotation 之 OneToMany(单向关联关系)
2012-10-10 21:53
501 查看
Java代码如下:
SQL:
alter table ORDERS drop foreign key FK8B7256E5C1E4F651
drop table if exists Customer
drop table if exists ORDERS
create table Customer (ID bigint not null auto_increment, NAME varchar(15), primary key (ID))
create table ORDERS (ID bigint not null auto_increment, ORDER_NUMBER varchar(15), customer_id bigint, primary key (ID))
alter table ORDERS add index FK8B7256E5C1E4F651 (customer_id), add constraint FK8B7256E5C1E4F651 foreign key (customer_id) references Customer (ID)
Hibernate: insert into ORDERS (ORDER_NUMBER) values (?)
Hibernate: insert into ORDERS (ORDER_NUMBER) values (?)
Hibernate: insert into Customer (NAME) values (?)
Hibernate: update ORDERS set customer_id=? where ID=?
Hibernate: update ORDERS set customer_id=? where ID=?
package com.lwp.hibernate.Model; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table public class Customer implements Serializable{ private static final long serialVersionUID = 1L; public Customer(){} public Customer(String name,Set<Order> orders){ this.name=name; this.orders = orders; } @Id @GeneratedValue @Column(name="ID") private Long id; @Column(name="NAME",length=15) private String name; @OneToMany @JoinColumn(name="customer_id") private Set<Order> orders = new HashSet<Order>(); public Set<Order> getOrders() { return orders; } public void setOrders(Set<Order> orders) { this.orders = orders; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.lwp.hibernate.Model; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="ORDERS") public class Order implements Serializable{ private static final long serialVersionUID = 1L; public Order(){} public Order(String orderNumber){ this.orderNumber =orderNumber; } @Id @GeneratedValue @Column(name="ID") private Long id; @Column(name="ORDER_NUMBER",length=15) private String orderNumber; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getOrderNumber() { return orderNumber; } public void setOrderNumber(String orderNumber) { this.orderNumber = orderNumber; } }
import java.util.HashSet; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; import com.lwp.hibernate.Model.Customer; import com.lwp.hibernate.Model.Order; public class CustomerTest { public static void main(String[] args) { new SchemaExport(new AnnotationConfiguration().configure("/hibernate.cfg.xml")).create(true, false); Set<Order> orders = new HashSet<Order>(); Order order1 = new Order("Tom_Order001"); Order order2 = new Order("Tom_Order002"); orders.add(order1); orders.add(order2); Customer customer = new Customer("Tom",orders); save(order1); save(order2); save(customer); } public static void save(Object o){ //Configuration cfg = new Configuration();//xx.hbm.xml形式下的new Configuration cfg = new AnnotationConfiguration(); //Annotation形式下的new SessionFactory sf = cfg.configure().buildSessionFactory(); Session session = sf.openSession(); session.beginTransaction(); session.save(o); session.getTransaction().commit(); session.close(); sf.close(); } }
SQL:
alter table ORDERS drop foreign key FK8B7256E5C1E4F651
drop table if exists Customer
drop table if exists ORDERS
create table Customer (ID bigint not null auto_increment, NAME varchar(15), primary key (ID))
create table ORDERS (ID bigint not null auto_increment, ORDER_NUMBER varchar(15), customer_id bigint, primary key (ID))
alter table ORDERS add index FK8B7256E5C1E4F651 (customer_id), add constraint FK8B7256E5C1E4F651 foreign key (customer_id) references Customer (ID)
Hibernate: insert into ORDERS (ORDER_NUMBER) values (?)
Hibernate: insert into ORDERS (ORDER_NUMBER) values (?)
Hibernate: insert into Customer (NAME) values (?)
Hibernate: update ORDERS set customer_id=? where ID=?
Hibernate: update ORDERS set customer_id=? where ID=?
相关文章推荐
- Hibernate 使用 Annotation 之 OneToMany(双向关联关系)
- hibernate3.5和spring结合使用annotation时onetomany的bug
- Hibernate关系映射(四)一对多单向关联@OneToMany Annotation方式
- hibernate 多对一(Many-to-one)单向关联
- Hibernate学习笔记--第二篇 关联关系映射 many –to –one
- 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable
- hibernate @OneToMany @ManyToOne 单向关联实体类非主键属性(以及包含多个属性关联)
- hibernate manyToOne lazy to one Annotation
- 码农小汪-Hibernate学习9-hibernate双向关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable
- org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined: com.bjsxt.model.Student.courses
- Hibernate关系映射(一)一对一单向外键关联@OneToOne Annotation方式
- 关于为什么单向一对多(one-to-many)要使用关联表的再思考
- hibernate OneToMany (Annotation)
- Hibernate的onetomany和manytoone联合使用(十八)
- Hibernate xml配置方法之OneToMany(单向关联关系)
- 自己总结一下关联关系映射中的OneToMany,ManyToOne,单向,双向注意的事项!ps:例子
- 使用session.createFilter()完成one-to-many关联关系的集合过滤
- Hibernate使用property-ref属性解决遗留数据库One To Many关系的问题。
- hibernate——onetomany(单向)
- Hibernate 之many-to-one 单向多对一关联示例