@Entity

@Table(name="orders")
public class Order {
 //1-m,多的一方为关系维护端,关系维护端负责外键记录的更新,关系被维护端没有权利更新外键记录
 private String orderid;
 private Float amount;
 private Set<OrderItem> items = new HashSet<OrderItem>();
 
 @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;
 }
 @OneToMany(cascade={CascadeType.REFRESH,CascadeType.PERSIST,CascadeType.REMOVE,CascadeType.MERGE},fetch=FetchType.LAZY,mappedBy="order")//出现mapby为被维护端|||默认为延迟加载
 public Set<OrderItem> getItems() {
  return items;
 }
 public void setItems(Set<OrderItem> items) {
  this.items = items;
 }
 public void addOrderItem(OrderItem orderItem){
  orderItem.setOrder(this);
  this.items.add(orderItem);
 }

}

@Entity
public class OrderItem {
 private Integer id;
 private String productName;
 private Float sellPrice = 0f;
 private Order order;
 
 @Id @GeneratedValue
 public 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;
 }
 @ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},optional=true)
 @JoinColumn(name="order_id")
 public Order getOrder() {
  return order;
 }
 public void setOrder(Order order) {
  this.order = order;
 }

}

CascadeType.REFRESH:级联刷新,当多个用户同时作操作一个实体,为了用户取到的数据是实时的,在用实体中的数据之前就可以调用一下refresh()方法!

CascadeType.REMOVE:级联删除,当调用remove()方法删除Order实体时会先级联删除OrderItem的相关数据!

CascadeType.MERGE:级联更新,当调用了Merge()方法,如果Order中的数据改变了会相应的更新OrderItem中的数据,

CascadeType.ALL:包含以上所有级联属性。

(注:以上几种级联操作,只能实在满足数据库的约束时才能生效,比如上边的Order和OrderItem存在主外键关联所以执行REMOVE()方法时是不能实现级联删除的)

CascadeType.PERSIST:级联保存,当调用了Persist() 方法,会级联保存相应的数据

hibernate 的 CascadeType 属性的更多相关文章

  1. Hibernate的cascade属性 特别是 cascadeType.all的 作用

    1.JPA中的CascadeType.ALL并不等于{CascadeType.PESIST,CascadeType.REMOVE,CascadeType.MERGE,CascadeType.REFRE ...

  2. Hibernate的generator属性之意义

    Hibernate的generator属性之意义 本文讲述Hibernate的generator属性的意义.Generator属性有7种class,本文简略描述了这7种class的意义和用法. Hib ...

  3. Hibernate中inverse属性与cascade属性

    Hibernate集合映射中,经常会使用到"inverse"和"cascade"这两个属性.对于我这样,Hibernate接触不深和语文水平够烂的种种因素,发现 ...

  4. Hibernate的generator属性

    本文讲述Hibernate的generator属性的意义.Generator属性有7种class,本文简略描述了这7种class的意义和用法. <class name="onlyfun ...

  5. Hibernate 中配置属性详解(hibernate.properties)

    Hibernate能在各种不同环境下工作而设计的, 因此存在着大量的配置参数.多数配置参数都 有比较直观的默认值, 并有随 Hibernate一同分发的配置样例hibernate.properties ...

  6. Hibernate学习一:Hibernate注解CascadeType

    http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hi ...

  7. Hibernate映射Map属性

    看到一篇Hibernate 映射Map属性的文章挺好的转载一下原地址:http://blog.sina.com.cn/s/blog_86f4502c0101fs1x.html Map集合属于有序集合, ...

  8. hibernate的级联(hibernate注解的CascadeType属性)

    [自己项目遇到的问题]: 新增  删除都可以实现 ,就是修改的时候无法同步更新设计三个类:  问题类scask  正文内容类text类    查看数+回复数+讨论数的runinfo类 [正文类和查看数 ...

  9. hibernate CascadeType属性说明

    CascadeType.PERSIST //只有A类新增时,会级联B对象新增.若B对象在数据库存(跟新)在则抛异常(让B变为持久态) CascadeType.MERGE //指A类新增或者变化,会级联 ...

随机推荐

  1. Less 使用指南

    简而言之 Less是为了简化css http://less.bootcss.com/features/ 以上链接是Less中文网站,里面有对Less的详细介绍. 一下写在使用中遇到的问题: 1.下载L ...

  2. C++ string到底是什么

    C++ string到底是什么? 要回答这个问题,先要了解什么是basic_string.看一下basic_string的声明: template < class charT, //定义字符串中 ...

  3. 。【自学总结 2】------3ds Max 菜单

    一.File〈文件菜单:主要用于打开.存储和打印文件,可以将文件导入和导出为不同的其他三维存档格式.〉 New〈新建〉 Reset〈重置〉 Open〈打开〉 Save〈保存〉 Save As〈保存为〉 ...

  4. System.Security.Cryptography.CryptographicException 出现了内部错误

    调试微信支付退款时,需要使用pfx证书,在本地调试时没有问题,但在服务器部署时报异常:System.Security.Cryptography.CryptographicException 出现了内部 ...

  5. cubic-bezier贝塞尔曲线css3动画工具

    今天在一本叫<HTML5触摸界面设计与开发>上看到一个做弹跳球的复杂动画效果,首先加速下降,停止,然后弹起时逐渐减速.是用cubic-bezier贝塞尔曲线来完成的.所以特地去学习了一下关 ...

  6. vs2010 vc++ 统一修改所有工程的目录配置

    vs2005和vs2008中都是通过 工具-选项-项目和解决方案-VC++目录,设置 头文件include .库文件lib.可执行文件dll的路径,以便在引用dll动态链接库文件时,可以查找到该文件的 ...

  7. GitHub下载的 Git Shell中出现的字符支持警告,将字体修改为新宋体即可

    ——解决办法: 将命令行字体修改为新宋体就可以了. 文章引用:http://www.cnblogs.com/veryinf/archive/2012/10/26/2740899.html

  8. Android显示基础--单位与尺寸

    px:是像素的意思,屏幕可以显示的最小元素单位,单独一个像素点非常小,肉眼都无法看到. pt:是磅数的意思,1磅等于七十二分之一英寸,pt一般用作字体的单位. dp:密度无关像素的意思,也被称为dip ...

  9. json和xml数据的解析

    一 json数据 1一条json就像一个对象,也想像OC中的数组,且内嵌了很多键值对字典 {"name" : "jack", "age" : ...

  10. ubuntu访问 windows文件

    在unbunt下,想打开windows的文件,出现这个报错 安装ntfs-3g: sudo apt-get install ntfs-3g 看下自己要挂载的分区叫啥名 sudo fdisk -l 我的 ...