云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          1. 數據庫的表結構
          CREATE TABLE  `software` (
            `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
            `name` varchar(45) NOT NULL,
            PRIMARY KEY (`id`)
          );


          CREATE TABLE  `version` (
            `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
            `publish_time` datetime NOT NULL,
            `software_id` int(10) unsigned NOT NULL,
            PRIMARY KEY (`id`)
          );

          2. java的class

          ---------------------------------------
          Software.java

          import java.util.LinkedHashSet;
          import java.util.Set;

          import javax.persistence.Entity;

          @Entity
          public class Software {

              private Long id;
              private String name;
              private Set<Version> versions = new LinkedHashSet<Version>();

              @Id
              @GeneratedValue(strategy = GenerationType.IDENTITY)
              public Long getId() {
                  return id;
              }

              public void setId(Long id) {
                  this.id = id;
              }
              public String getName() {
                  return name;
              }
              public void setName(String name) {
                  this.name = name;
              }
             
              @OneToMany(cascade = { CascadeType.ALL }, mappedBy="software")
              @JoinColumn(name = "software_id")
              @Fetch(FetchMode.SUBSELECT)
              @OrderBy("id")
              public Set<Version> getVersions() {
                  return version;
              }

              public void setVersions(Set<Version> Versions) {
                  this.versions = versions;
              }
          }

          -----------------------------------------------------
          Version.java

          import java.util.Date;
          import javax.persistence.Entity;

          @Entity
          public class Version{
              private Long id;
              private Date publishTime;
              private Software software;
             
              @Id
              @GeneratedValue(strategy = GenerationType.IDENTITY)
              public Long getId() {
                  return id;
              }

              public void setId(Long id) {
                  this.id = id;
              }
              public Date getPublishTime() {
                  return publishTime;
              }
              public void setPublishTime(Date publishTime) {
                  this.publishTime = publishTime;
              }
             
              @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
              @JoinColumn(name = "software_id")
              public Software getSoftware() {
                  return software;
              }

              public void setSoftware(Software software) {
                  this.software = software;
              }
          }

          3. 測試代碼

          Software software = new Software();
          software.setName("Windows");

          Version version = new Version;
          version.setPublishTime(new Date());
          version.setSoftware(software);

          software.getVersions().add(version);

          software.save();

          hibernate會自動生成兩條insert語句,一條是software的insert語句,一條是version的insert語句。
          同樣,如果刪除software的話,也會生成兩條delete語句


          主站蜘蛛池模板: 唐河县| 大新县| 卢龙县| 砚山县| 桐梓县| 广水市| 宁城县| 政和县| 富蕴县| 兰西县| 巴中市| 安西县| 林甸县| 秭归县| 界首市| 南城县| 宜章县| 井冈山市| 镇雄县| 石屏县| 罗江县| 柳州市| 株洲县| 宝丰县| 玛多县| 田阳县| 长岭县| 乌兰县| 南召县| 葵青区| 宿州市| 华宁县| 昔阳县| 乡城县| 佳木斯市| 桃源县| 大关县| 遵化市| 巴彦县| 竹山县| 内乡县|