• 1-N关系的1端持久化类

    package org.drsoft.hibernate.model.oneToMany;

     
     

    import java.util.Date;

    import java.util.Set;

     
     

    import javax.persistence.*;

     
     

    @Entity

    @Table(name = "OneToMany_One")

    public class OneToManyForOneModel {

    @Id

    @Column(name = "Record_ID")

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private int recordID;

     
     

    @Column(name = "Total_Trade_Amt")

    private long totalTradeAmt;

     
     

    @Column(name = "Modify_Time")

    private Date modifyTime;

     
     

    @Column(name = "Create_Time", insertable = false, updatable = false)

    private Date createTime;

     
     

    @OneToMany(cascade = {

    CascadeType.PERSIST }, fetch = FetchType.LAZY, targetEntity = OneToManyForManyModel.class, orphanRemoval = false,mappedBy="oneToManyForOneModel")

    private Set<OneToManyForManyModel> details;

     
     

    省略setter和getter

    }

 
 

  • 1-N关系的N端持久化类

    package org.drsoft.hibernate.model.oneToMany;

     
     

    import java.util.Date;

     
     

    import javax.persistence.*;

     
     

    @Entity

    @Table(name = "OneToMany_Many")

    public class OneToManyForManyModel {

     
     

    @Id

    @Column(name = "Detail_ID")

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private int detailID;

     
     

    @Column(name = "Trade_Amt")

    private long tradeAmt;

     
     

    @Column(name = "Create_Time", insertable = false, updatable = false)

    private Date createTime;

     
     

    @ManyToOne

    @JoinColumn(name = "Ref_Record_ID", referencedColumnName = "Record_ID")

    private OneToManyForOneModel oneToManyForOneModel;

     
     

    省略setter和getter

    }

     
     

  • 测试调用

    package org.drsoft.hibernate.manager.oneToMany;

     
     

    import java.util.*;

     
     

    import org.drsoft.hibernate.model.oneToMany.*;

    import org.drsoft.utils.hibernateUtils;

    import org.hibernate.Session;

    import org.hibernate.Transaction;

     
     

    public class OneToManyManager {

    public static void main(String[] args) {

    Session curSession = hibernateUtils.openSession();

    Transaction curTransaction = null;

    Calendar calendar = Calendar.getInstance(Locale.CHINA);

    try {

    System.out.println("#1 创建 One 和 Many数据");

    // #1 创建 One 和 Many数据

    OneToManyForOneModel oneToManyForOneModel = new OneToManyForOneModel();

     
     

    long totalTradeAmt = 0;

    for (int i = 0; i < 5; i++) {

    OneToManyForManyModel oneToManyForManyModel = new OneToManyForManyModel();

    oneToManyForManyModel.setTradeAmt(calendar.get(Calendar.SECOND) + i);

    totalTradeAmt = totalTradeAmt + oneToManyForManyModel.getTradeAmt();

    if (oneToManyForOneModel.getDetails() == null) {

    oneToManyForOneModel.setDetails(new HashSet<OneToManyForManyModel>());

    System.out.println("创建 HashSet<OneToManyForManyModel>()");

    }

    oneToManyForOneModel.getDetails().add(oneToManyForManyModel);

    }

     
     

    oneToManyForOneModel.setTotalTradeAmt(totalTradeAmt);

    oneToManyForOneModel.setModifyTime(new Date());

     
     

    curTransaction = hibernateUtils.beginTransaction(curSession);

    curSession.persist(oneToManyForOneModel);

    curTransaction.commit();

     
     

    System.out.println("#2 查询 One 数据");

    // #2 查询 One 数据

    oneToManyForOneModel = (OneToManyForOneModel) curSession.load(OneToManyForOneModel.class, new Integer(1));

    System.out.println("OneToManyForOneModel RecordID=" + oneToManyForOneModel.getRecordID()

    + "\tTotalTradeAmt=" + oneToManyForOneModel.getTotalTradeAmt());

     
     

    Set<OneToManyForManyModel> details = oneToManyForOneModel.getDetails();

    Iterator<OneToManyForManyModel> it = details.iterator();

    while (it.hasNext()) {

    OneToManyForManyModel obj = it.next();

    System.out.println(

    "OneToManyForManyModel DetailID=" + obj.getDetailID() + "\tTradeAmt=" + obj.getTradeAmt());

    }

    } catch (Exception e) {

    if (curTransaction != null && curTransaction.isActive()) {

    curTransaction.rollback();

    }

     
     

    throw e;

    } finally {

    if (curSession != null) {

    curSession.close();

    }

    }

    }

    }

     
     

 
 

笔记:Hibernate 持久化类标注示例-双向1-N关系映射的更多相关文章

  1. 笔记:Hibernate 持久化类标注说明

    持久化类标注 标注 @Entity:注解声明该类是一个Hibernate的持久化类 标注 @Table:指定该类映射的表 参数 name:指定映射数据库表的名称 参数 uniqueConstraint ...

  2. (转) Hibernate持久化类与主键生成策略

    http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...

  3. Hibernate框架(三)框架中的关系映射

    在设计数据库时我们会考虑,表与表之间的关系,例如我们前边经常提到的一对一,一对多,多对多关系,在数据库中我们通过外键,第三张表等来实现这些关系.而Hibernate时间实体类和数据库中的表进行的映射, ...

  4. Hibernate持久化类属性映射

    Hibernate充当应用程序和数据库之间的中间件,实现二者之间的交互操作,他对JDBC进行了封装,以完全面向对象的方式来操作数据. 适用于有多个数据源的情况下,不必去考虑不同数据源的操作差异. Hi ...

  5. hibernate持久化类中,修改字符串长度时,注意的问题

    在使用hibernate注解修饰字符串长度时,如果一开始没有把String类型的变量长度设计好,在网数据库插入数据时,容易造成字段长度超出错误,这时候需要修改@Column里length的大小.如果使 ...

  6. Hibernate持久化类规则

    注意事项: 提供无参的构造方法,因为在hibernate需要使用反射生成类的实例 提供私有属性,并对这些属性提供公共的setting和getting方法,因为在hibernate底层会将查询到的数据进 ...

  7. (补充)06.Hibernate持久化类&持久化对象

    持久化类:就是一个Java类(JavaBean),这个类与表建立映射关系就可以成为是持久类 持久化类 = JavaBean + xxx.hbm.xml 编写规则: 1.提供一个无参数,public访问 ...

  8. Hibernate框架之双向多对多关系映射

    昨天跟大家分享了Hibernate中单向的一对多.单向多对一.双向一对多的映射关系,今天跟大家分享下在Hibernate中双向的多对多的映射关系 这次我们以项目和员工举个栗子,因为大家可以想象得到,在 ...

  9. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

随机推荐

  1. WPF将RGB转为HSL的工具类

    class HSLColor     {         private int _alpha = 255;         public int _hue = 0;         public d ...

  2. 决策树学习笔记(Decision Tree)

    什么是决策树? 决策树是一种基本的分类与回归方法.其主要有点事模型具有可得性,分类速度快.学习时,利用训练数据,根据损失函数最小化原则建立决策树模型:预测时,对新数据,利用决策树模型进行分类. 决策树 ...

  3. jquery获取选中的文本和值

    jquery获取选中的文本和值 1.说明 (1)获取select下拉框选中的索引       $("#selection").get(0).selectedIndex; (2)获取 ...

  4. 如何给filter添加自定义接口及调用

    本例子是在VirtualCamera的基础上添加的自定义接口用来实现exe控制osd的显示. 1. 接口部分 #ifndef __H_MyFilter__#define __H_MyFilter__# ...

  5. 事件绑定与解除js

    //Ys为元素,Sj为事件,Hs为函数,bol选择是true绑定事件,还是false解除事件 //需要提前定义a,b,c,bol function thing(Ys,Sj,Hs,bol){ var i ...

  6. 异常-----freemarker.template.TemplateException: Expected collection or sequence. datas evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 7, column 18 in inc/select.ftl.

    1.错误描述 六月 26, 2014 11:26:27 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  7. 从零一起学Spring Boot之LayIM项目长成记(三) 数据库的简单设计和JPA的简单使用。

    前言 今天是第三篇了,上一篇简单模拟了数据,实现了LayIM页面的数据加载.那么今天呢就要用数据库的数据了.闲言少叙,书归正传,让我们开始吧. 数据库 之前有好多小伙伴问我数据库是怎么设计的.我个人用 ...

  8. 促进客户转化,提高客单价!酷客多小程序发布版本V1.0.9!

    商户和企业主的又一次福音!酷客多小程序新零售o2o商城系统酷爱用户,为了追求极致的用户体验,没日没夜地沉浸于新功能的开发,经过一番努力,新功能终于上线啦! 此次版本迭代,在原有功能基础上做了大幅提升, ...

  9. 描述下@Component,@Repository,@Service,@Scope,@Autowired,@Inject,@Value标记的作用

    1.@Component为通用注解. 2.@Repository为持久层组件注解. 3.@Service为业务层组件注解. 4.@Scope为Bean的作用域注解. 5.@Autowired,@Inj ...

  10. Js表单验证控件(使用方便,无需编码)-01使用说明

    演示地址:http://weishakeji.net/Utility/Verify/Index.htm    开源地址:https://github.com/weishakeji/Verify_Js ...