zoukankan      html  css  js  c++  java
  • 笔记:Hibernate 持久化类标注示例-双向1-N关系映射

    • 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()

      + " TotalTradeAmt=" + 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() + " TradeAmt=" + obj.getTradeAmt());

      }

      } catch (Exception e) {

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

      curTransaction.rollback();

      }

         

      throw e;

      } finally {

      if (curSession != null) {

      curSession.close();

      }

      }

      }

      }

         

       

  • 相关阅读:
    easyUI 后台经典框架DEMO下载
    一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
    WCF的三个名称/命名空间,你是否傻傻分不清楚?
    未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService... 匹配的导出 VS2012报错
    jquery easyui tabs单击刷新右键刷新
    在64位Windows7上安装64位Oracle11g
    Linux入门
    服务器硬件知识
    IP后面带/30 /29 /27等是什么意思?
    vitualbox安装centos7卡死
  • 原文地址:https://www.cnblogs.com/li3807/p/6358383.html
Copyright © 2011-2022 走看看