1、一对多关联,级联操作

@OneToMany(mappedBy = "paymentad", cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = PaymentAdHistory.class)
public List<PaymentAdHistory> getPaymentHis() {
    return paymentHis;
}

PaymentAdHistory类中

@ManyToOne(cascade = { CascadeType.MERGE })
   @JoinColumn(name = "PAYMENTAD")
   @NotFound(action = NotFoundAction.IGNORE)

public PaymentAd getPaymentad() {
       return paymentad;
   }

2、刷新

Adagent aa =adagentDao.get(id);

adagentDao.getSession().refresh(aa);

3、Hibernate Annotation (Hibernate 注解)

http://www.cnblogs.com/hongten/archive/2011/07/20/2111773.html

中文说明:http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/

==============================================================================

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

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

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

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

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

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

2、级联删除

Hibernate一对多双向annotation配置

摘自:http://www.javaeye.com/topic/95822

school和userMember是一对多关系:

SchoolInfo.java

1import javax.persistence.CascadeType;   
2import javax.persistence.Column;   
3import javax.persistence.Entity;   
4import javax.persistence.FetchType;   
5import javax.persistence.GeneratedValue;   
6import javax.persistence.Id;   
7import javax.persistence.OneToMany;   
8import javax.persistence.Table;   
9import javax.persistence.Temporal;   
10import javax.persistence.TemporalType;   
11   
12import org.hibernate.annotations.Formula;   
13import org.hibernate.annotations.GenericGenerator;   
14   
15@Entity   
16@Table(name = "school_info")   
17public class SchoolInfo implements java.io.Serializable {   
18   
19    @Id   
20    @GeneratedValue(generator = "system-uuid")   
21    @GenericGenerator(name = "system-uuid", strategy = "uuid")   
22    private String id;//hibernate的uuid机制,生成32为字符串   
23   
24    @Column(name = "actcodeId", updatable = false, nullable = true, length = 36)   
25    private String actcodeId;   
26   
27    @Formula("select COUNT(*) from school_info")   
28    private int count;   
29   
30    @Temporal(TemporalType.TIMESTAMP)//不用set,hibernate会自动把当前时间写入   
31    @Column(updatable = false, length = 20)   
32    private Date createTime;   
33   
34    @Temporal(TemporalType.TIMESTAMP)   
35    private Date updateTime;// 刚开始我默认insertable=false,但会读取出错提示如下:   
36    // Value '0000-00-00' can not be represented as java.sql.Timestamp   
37   
38    // mappedBy="school"就相当于inverse=true,(mappedBy指定的是不需要维护关系的一端)   
39    // 应该注意的是mappedBy值对应@ManyToOne标注的属性,我刚开始写成"schoolId",让我郁闷了好一会 
40   @OneToMany(mappedBy = "school", cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = UserMember.class)   
41    // 用范性的话,就不用targetEntity了   
42    private List<usermember> users = </usermember>new ArrayList<usermember>();  </usermember> 
43       
44}   
45

@GeneratedValue(strategy=GenerationType.AUTO)我们常用的自增长机制,我这里采用的是hibernate的uuid生成机制.
需要注意的是import javax.xx.Entity ,而不是org.hibernate.xx.Entity。

郁闷的是我上面用到@Formula,生成的sql竟然是'select COUNT(*) from school_info as formula0_ from school_info schoolinfo0_,当然不能执行了,寻求正解中~!!!!!!!!!

UserMember.java(前面引入的包已经贴过了,下面就不贴了) 

1 @Entity   
2 @Table(name = "teacher_info")//实体类和数据库表名不一致时,才用这个   
3 public class UserMember implements java.io.Serializable {   
4   
5    @Id   
6    @GeneratedValue(generator = "system-uuid")   
7    @GenericGenerator(name = "system-uuid", strategy = "uuid")   
8    private String id;   
9   
10    @Column(updatable = false, nullable = false, length = 20)   
11    private String logonName;   
12       
13    @Temporal(TemporalType.TIMESTAMP)   
14    @Column(updatable = false, length = 20)   
15    private Date createTime;   
16   
17    @Temporal(TemporalType.TIMESTAMP)   
18    private Date updateTime;   
19   
20   @ManyToOne(cascade = { CascadeType.MERGE })   
21    @JoinColumn(name = "schoolId")   
22    private SchoolInfo school;   
23    //注意该类就不用声明schoolId属性了,如果不用@JoinColumn指明关联的字段,hibernate默认会是school_id.   
24   
25 }

如果不是在delete()中可以试一下

  1. public void delete_cascade(final Movietype persistentInstance) {

  2. log.debug("deleting Movietype instance");

  3. try {

  4. getHibernateTemplate().executeFind(new HibernateCallback() {

  5. public Object doInHibernate(Session s)

  6. throws HibernateException, SQLException {

  7. s.setFlushMode(FlushMode.AUTO);

  8. s.beginTransaction().begin();

  9. s.delete(persistentInstance);

  10. s.beginTransaction().commit();

  11. s.close();

  12. return null;

  13. }

  14. });

  15. } catch (RuntimeException re) {

  16. log.error("find all failed", re);

  17. throw re;

  18. }

  19. }

本文转自追光的猫博客51CTO博客,原文链接http://blog.51cto.com/ql0722/1655987如需转载请自行联系原作者
00_yatou

Hibernate Annotation 学习相关推荐

  1. Hibernate基础学习2

    Hibernate基础学习2 测试hibernate的一级缓存,事务以及查询语句 1)Hibernate的一些相关概念 hibernate的一级缓存 1)缓存是为了提高该框架对数据库的查询速度 2)一 ...

  2. hibernate annotation注解方式来处理映射关系

    2019独角兽企业重金招聘Python工程师标准>>> 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟 ...

  3. Hibernate Annotation的 *ToOne默认的FetchType是EAGER的

    Hibernate Annotation的 *ToOne默认的FetchType是EAGER的 public class Entry{ ... @ManyToOne(targetEntity = Us ...

  4. Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解

    1.一对一 (One to One)     共三种情况:      1.1 主键共享     1.2 外键共享 1.3 中间表关联 1.1  code: @Entity public class a ...

  5. Hibernate 注解学习

    /** * @author liuguangyi * @content ejb3注解的API定义在javax.persistence.*包里面. * * 注释说明: * @Entity -- 将一个类 ...

  6. Hibernate Annotation _List/Map

    // Student.java 实体类package com.tao.pojo;import java.util.List;public class Student {private int id;p ...

  7. 【大话hibernate】hibernate系统学习大合集

    转载请注明出处:http://blog.csdn.net/column/details/hibernatebylmb.html 为了方便各位网友学习以及方便自己复习之用,将Jhibernate系统学习 ...

  8. 基于jsp+mysql+Spring+hibernate+在线学习交流论坛平台

    本项目演示链接地址 > 主要功能模块设计: 管理员角色包含以下功能:管理员登录,发布公告,修改资料,查看新帖,查看精华帖请求,封锁用户,创建讨论区等功能. 用户角色包含以下功能:按分类查看,用户 ...

  9. hibernate框架学习笔记11:Criteria查询详解

    创建实体类对象: package domain;import java.util.HashSet; import java.util.Set;//客户实体 public class Customer ...

最新文章

  1. C#中在应用程序和DLL使用消息
  2. 测试keras和mxnet的速度
  3. c语言宏定义_掌握C语言,中文编程不是梦
  4. 前端 圆形进度图_CSS3+JS实现静态圆形进度条
  5. 未来这五种新经济思维,会让你找到更多的创业机会
  6. 【转】DataGridView之为每行前面添加序号
  7. 【综合篇】Web前端性能优化原理问题
  8. neo4j社区版下载
  9. 汽车维修企业管理【5】
  10. (Java笔记)静态代理
  11. D1、4CIF、CIF和QCIF的不同
  12. jQuery插件开发标准写法
  13. springboot+教学工作量管理系统 毕业设计-附源码221541
  14. Joel在耶鲁大学的演讲
  15. 华为matex搭载鸿蒙系统,华为MateX推迟至9月上市,或预装鸿蒙系统
  16. 全自动棉纱缠绕机行业调研报告 - 市场现状分析与发展前景预测
  17. cgb2110-day10
  18. 【网页设计自习室#002】网站页面基本布局与结构
  19. SwinNet: Swin Transformer drives edge-aware RGB-D and RGB-T salient object detection
  20. datax值转换使用以及源码分析

热门文章

  1. Spring Boot + Vue 如此强大?
  2. 惊呆了,Spring中竟然有12种定义bean的方法
  3. 一文彻底搞懂 zookeeper 核心知识点(修订版)
  4. 10大黑客专用的 Linux 操作系统,每个都很酷!
  5. 清华NLP实验室刘知远:如何写一篇合格的NLP论文
  6. 读科研文献也能泄露隐私,用户发现爱思唯尔PDF阅读器收集用户信息
  7. 同时上哈佛,还一起一作发Nature!这对95后学霸情侣让人慕了……
  8. 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套(附免费下载)...
  9. 阿里财报:盒马和天猫超市是跑的最快的业务,阿里云离盈利只差临门一脚
  10. 套娃成功!在《我的世界》里运行Win95、玩游戏,软件和教程现已公开