JPA中的一对多双向关联、级联操作、关系维护、延迟加载
来源:互联网 发布:外国人用什么软件 编辑:程序博客网 时间:2024/05/20 22:49
package cn.itcast.bean;import java.util.HashSet;import java.util.Set;import javax.persistence.*;@Entity@Table(name="orders")//order与sql语句中的order by会发生冲突,因此必须改名public class Order {private String orderid;private Float amount=0f;private Set<OrderItem> items=new HashSet<OrderItem>();/** CascadeType.REFRESH 级联刷新 * CascadeType.PERSIST 级联插入,只有在调用persist方法时才有作用 * CascadeType.MERGE 级联更新,只有在调用merge方法时才有作用 * CascadeType.REMOVE 级联删除,只有在调用remove方法时才有作用 * CascadeType.All 包括全部 * fetch=FetchType.LAZY延迟加载(在many情况下,默认是延迟加载,在one情况下,默认是立即加载) * mappedBy="order"表示这个类是 关系被维护端,指明该实体内被维护的属性为order **/@OneToMany(cascade={CascadeType.REFRESH,CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE},fetch=FetchType.LAZY,mappedBy="order") public Set<OrderItem> getItems() {return items;}public void setItems(Set<OrderItem> items) {this.items = items;}@Id @Column(length=12)public String getOrderid() {return orderid;}public void setOrderid(String orderid) {this.orderid = orderid;}@Column(nullable=false)public Float getAmount() {return amount;}public void setAmount(Float amount) {this.amount = amount;}public void addOrderItem(OrderItem orderItem)//在订单类中添加一个“添加订单项”的方法,方便方法的调用{orderItem.setOrder(this);this.items.add(orderItem);}}
package cn.itcast.bean;import javax.persistence.Entity;import javax.persistence.*;@Entitypublic class OrderItem {private Integer id;private String productName;private Float sellPrice=0f;private Order order; /** * 多的一方不需要 级联保存,不需要级联删除 * optional=true表示可选,表示此项可以为空**/@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},optional=true)@JoinColumn(name="order_id")//外键名称order_idpublic Order getOrder() {return order;}public void setOrder(Order order) {this.order = order;}@Id @GeneratedValuepublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Column(length=40,nullable=false)public String getProductName() {return productName;}public void setProductName(String productName) {this.productName = productName;}@Column(nullable=false)public Float getSellPrice() {return sellPrice;}public void setSellPrice(Float sellPrice) {this.sellPrice = sellPrice;}}
package junit.test;import java.util.UUID;import javax.persistence.*;import org.junit.BeforeClass;import org.junit.Test;import cn.itcast.bean.Order;import cn.itcast.bean.OrderItem;public class OneToManyTest {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}@Test public void save(){EntityManagerFactory factory=Persistence.createEntityManagerFactory("itcast");EntityManager em=factory.createEntityManager();em.getTransaction().begin();Order order=new Order();order.setAmount(34f);order.setOrderid("999");//UUID.randomUUID().toString()OrderItem orderItem1=new OrderItem();orderItem1.setProductName("足球");orderItem1.setSellPrice(90f);OrderItem orderItem2=new OrderItem();orderItem2.setProductName("瑜珈球");orderItem2.setSellPrice(30f);order.addOrderItem(orderItem1);order.addOrderItem(orderItem2);em.persist(order);em.getTransaction().commit();em.close();factory.close();}}
0 0
- JPA中的一对多双向关联、级联操作、关系维护、延迟加载
- 传智播客jpa详解视频教程(七):JPA中的一对多双向关联与级联操作、延迟加载与关系维护
- JPA中的多对多双向关联、级联操作、关系维护、延迟加载
- JPA学习记录六(JPA中的一对多双向关联与级联操作)
- JPA 一对多延迟加载与关系维护
- JPA映射关联关系-双向一对多
- Hibernate中的延迟加载、实体关联单向一对多及双向一对多实体关联
- JPA的双向一对多和双向一对一关联关系
- 一对多单向双向映射关联关系之映射文件与级联操作
- Hibernate学习之级联操作2——一对多双向自身关联关系
- JPA之JPA中的一对多双向关联
- JPA 一对多双向关联
- jpa 双向一对多,多对一关联关系
- JPA学习笔记-映射双向一对多的关联关系
- 一对多双向关联,级联删除
- 【JPA 级联保存/级联删除】@OneToMany (双向) 一对多
- 【JPA 级联保存/级联删除】@OneToMany (双向) 一对多
- [记录]JPA双向关联一对多
- opencv学习笔记(一)
- Java容器学习之Set
- 【算法导论】03——分治法
- C# 用delegate实现AOP事务[C# | AOP | delegate]
- JavaSE的有关网络编程的服务器与客户端的通信代码
- JPA中的一对多双向关联、级联操作、关系维护、延迟加载
- Bundle savedInstanceState的作用
- shell中的map使用
- 我的这张嘴啊
- LVM2 Logical Volume Manager 详解(五)--利用快照备份
- 告别,去创造更大的世界
- 图片拖曳和缩放
- leetcode 刷题之路 19 Valid Palindrome
- 如何优雅的研究 RGSS3 (六) 技能与物品画面剖析