云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          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語句


          主站蜘蛛池模板: 富民县| 镇平县| 泽库县| 定结县| 富民县| 台前县| 鲁山县| 平武县| 宁城县| 龙南县| 肥西县| 囊谦县| 报价| 黄大仙区| 孙吴县| 香河县| 高邮市| 泉州市| 定襄县| 满洲里市| 津南区| 安岳县| 桂林市| 滨海县| 邳州市| 托克逊县| 都匀市| 大庆市| 临夏县| 婺源县| 毕节市| 句容市| 合山市| 米泉市| 定陶县| 平罗县| 且末县| 沽源县| 浦江县| 太和县| 新安县|