国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java hibernate使用注解來定義聯合主鍵

2019-11-26 13:13:37
字體:
來源:轉載
供稿:網友

java  hibernate使用注解來定義聯合主鍵

下面使用hibernate的API中說明的三種方式來定義主鍵,主要使用Annotation來定義hibernate中的聯合主鍵

下面取至hibernate的API文檔:

定義組合主鍵的幾種語法:

1、將組件類注解為@Embeddable,并將組件的屬性注解為@Id
2、將組件的屬性注解為@EmbeddedId
3、將類注解為@IdClass,并將該實體中所有屬于主鍵的屬性都注解為@Id

下面就分別使用這三種方式來定義聯合主鍵。

建表的SQL語句:

CREATE TABLE `syslogs` (  `id` varchar(50) NOT NULL,  `yhid` varchar(50) NOT NULL,  `modelname` varchar(100) DEFAULT NULL,  `content` varchar(500) DEFAULT NULL,  `inserttime` varchar(20) DEFAULT NULL,  `remark` varchar(50) DEFAULT NULL,  PRIMARY KEY (`id`,`yhid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf-8; 

一、將組件類注解為@Embeddable

/**  * SysLogsDtoId代表主鍵類  */ package com.hibernate.dto;  import javax.persistence.Embeddable; /**  * 1、主鍵類必須要實現java.io.Serializable接口  * 2、主鍵類必須要重寫equals和hashCode方法  * @author ibm  */ @Embeddable public class SysLogsDtoId implements java.io.Serializable {    private static final long serialVersionUID = 1L;   private String id;   private String yhid;    public SysLogsDtoId() {   }    public SysLogsDtoId(String id, String yhid) {     this.id = id;     this.yhid = yhid;   }    public String getId() {     return this.id;   }    public void setId(String id) {     this.id = id;   }    public String getYhid() {     return this.yhid;   }    public void setYhid(String yhid) {     this.yhid = yhid;   }    public boolean equals(Object other) {     if ((this == other))       return true;     if ((other == null))       return false;     if (!(other instanceof SysLogsDtoId))       return false;     SysLogsDtoId castOther = (SysLogsDtoId) other;      return ((this.getId() == castOther.getId()) || (this.getId() != null && castOther.getId() != null && this.getId().equals(castOther.getId())))         && ((this.getYhid() == castOther.getYhid()) || (this.getYhid() != null && castOther.getYhid() != null && this.getYhid().equals(             castOther.getYhid())));   }    public int hashCode() {     int result = 17;      result = 37 * result + (getId() == null ? 0 : this.getId().hashCode());     result = 37 * result + (getYhid() == null ? 0 : this.getYhid().hashCode());     return result;   }  } 
/**  * SysLogsDto為表對象映射類,其中主鍵為主鍵類SysLogsDtoId  */ package com.hibernate.dto;  import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table;  @Entity @Table(name = "syslogs") public class SysLogsDto implements java.io.Serializable {   private static final long serialVersionUID = 1L;   private SysLogsDtoId id;   private String modelname;   private String content;   private String inserttime;   private String remark;    public SysLogsDto() {   }    public SysLogsDto(SysLogsDtoId id) {     this.id = id;   }    public SysLogsDto(SysLogsDtoId id, String modelname, String content, String inserttime, String remark) {     this.id = id;     this.modelname = modelname;     this.content = content;     this.inserttime = inserttime;     this.remark = remark;   }    @Id   public SysLogsDtoId getId() {     return this.id;   }    public void setId(SysLogsDtoId id) {     this.id = id;   }    @Column(name = "modelname", length = 100)   public String getModelname() {     return this.modelname;   }    public void setModelname(String modelname) {     this.modelname = modelname;   }    @Column(name = "content", length = 500)   public String getContent() {     return this.content;   }    public void setContent(String content) {     this.content = content;   }    @Column(name = "inserttime", length = 20)   public String getInserttime() {     return this.inserttime;   }    public void setInserttime(String inserttime) {     this.inserttime = inserttime;   }    @Column(name = "remark", length = 50)   public String getRemark() {     return this.remark;   }    public void setRemark(String remark) {     this.remark = remark;   }  } 

二、將組件的屬性注解為@EmbeddedId

這種情況最簡單,主鍵類只用定義主鍵字段,不需要寫任何注解。然后在對象類中在主鍵類的get方法上加上@EmbeddedId注解。

/**  * SysLogsDtoId代表主鍵類  */ package com.hibernate.dto;  public class SysLogsDtoId implements java.io.Serializable {    private static final long serialVersionUID = 1L;   private String id;   private String yhid;    public SysLogsDtoId() {   }    public SysLogsDtoId(String id, String yhid) {     this.id = id;     this.yhid = yhid;   }    public String getId() {     return this.id;   }    public void setId(String id) {     this.id = id;   }    public String getYhid() {     return this.yhid;   }    public void setYhid(String yhid) {     this.yhid = yhid;   }    public boolean equals(Object other) {     if ((this == other))       return true;     if ((other == null))       return false;     if (!(other instanceof SysLogsDtoId))       return false;     SysLogsDtoId castOther = (SysLogsDtoId) other;      return ((this.getId() == castOther.getId()) || (this.getId() != null && castOther.getId() != null && this.getId().equals(castOther.getId())))         && ((this.getYhid() == castOther.getYhid()) || (this.getYhid() != null && castOther.getYhid() != null && this.getYhid().equals(             castOther.getYhid())));   }    public int hashCode() {     int result = 17;      result = 37 * result + (getId() == null ? 0 : this.getId().hashCode());     result = 37 * result + (getYhid() == null ? 0 : this.getYhid().hashCode());     return result;   }  } 
/**  * SysLogsDto為表對象映射類,其中主鍵為主鍵類SysLogsDtoId  */ package com.hibernate.dto;  import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.Table;  @Entity @Table(name = "syslogs") public class SysLogsDto implements java.io.Serializable {   private static final long serialVersionUID = 1L;   private SysLogsDtoId id;   private String modelname;   private String content;   private String inserttime;   private String remark;    public SysLogsDto() {   }    public SysLogsDto(SysLogsDtoId id) {     this.id = id;   }    public SysLogsDto(SysLogsDtoId id, String modelname, String content, String inserttime, String remark) {     this.id = id;     this.modelname = modelname;     this.content = content;     this.inserttime = inserttime;     this.remark = remark;   }    @EmbeddedId   public SysLogsDtoId getId() {     return this.id;   }    public void setId(SysLogsDtoId id) {     this.id = id;   }    @Column(name = "modelname", length = 100)   public String getModelname() {     return this.modelname;   }    public void setModelname(String modelname) {     this.modelname = modelname;   }    @Column(name = "content", length = 500)   public String getContent() {     return this.content;   }    public void setContent(String content) {     this.content = content;   }    @Column(name = "inserttime", length = 20)   public String getInserttime() {     return this.inserttime;   }    public void setInserttime(String inserttime) {     this.inserttime = inserttime;   }    @Column(name = "remark", length = 50)   public String getRemark() {     return this.remark;   }    public void setRemark(String remark) {     this.remark = remark;   }  } 

三、將類注解為@IdClass,并將該實體中所有屬于主鍵的屬性都注解為@Id

/**  * SysLogsDtoId代表主鍵類  */ package com.hibernate.dto;  public class SysLogsDtoId implements java.io.Serializable {    private static final long serialVersionUID = 1L;   private String id;   private String yhid;    public SysLogsDtoId() {   }    public SysLogsDtoId(String id, String yhid) {     this.id = id;     this.yhid = yhid;   }    public String getId() {     return this.id;   }    public void setId(String id) {     this.id = id;   }    public String getYhid() {     return this.yhid;   }    public void setYhid(String yhid) {     this.yhid = yhid;   }    public boolean equals(Object other) {     if ((this == other))       return true;     if ((other == null))       return false;     if (!(other instanceof SysLogsDtoId))       return false;     SysLogsDtoId castOther = (SysLogsDtoId) other;      return ((this.getId() == castOther.getId()) || (this.getId() != null && castOther.getId() != null && this.getId().equals(castOther.getId())))         && ((this.getYhid() == castOther.getYhid()) || (this.getYhid() != null && castOther.getYhid() != null && this.getYhid().equals(             castOther.getYhid())));   }    public int hashCode() {     int result = 17;      result = 37 * result + (getId() == null ? 0 : this.getId().hashCode());     result = 37 * result + (getYhid() == null ? 0 : this.getYhid().hashCode());     return result;   }  } 
/**  * SysLogsDto為表對象映射類,其中主鍵為主鍵類SysLogsDtoId  */ package com.hibernate.dto;  import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.Table;  @Entity @Table(name = "syslogs") @IdClass(value=SysLogsDtoId.class) public class SysLogsDto implements java.io.Serializable {   private static final long serialVersionUID = 1L;   private String id;   private String yhid;   private String modelname;   private String content;   private String inserttime;   private String remark;    public SysLogsDto() {   }    @Id   public String getId() {     return id;   }     public void setId(String id) {     this.id = id;   }    @Id   public String getYhid() {     return yhid;   }     public void setYhid(String yhid) {     this.yhid = yhid;   }     @Column(name = "modelname", length = 100)   public String getModelname() {     return this.modelname;   }    public void setModelname(String modelname) {     this.modelname = modelname;   }    @Column(name = "content", length = 500)   public String getContent() {     return this.content;   }    public void setContent(String content) {     this.content = content;   }    @Column(name = "inserttime", length = 20)   public String getInserttime() {     return this.inserttime;   }    public void setInserttime(String inserttime) {     this.inserttime = inserttime;   }    @Column(name = "remark", length = 50)   public String getRemark() {     return this.remark;   }    public void setRemark(String remark) {     this.remark = remark;   }  } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 井冈山市| 陇西县| 阿坝| 阿克苏市| 恩平市| 拉孜县| 革吉县| 郧西县| 岢岚县| 南郑县| 阿图什市| 宣化县| 伊春市| 岗巴县| 宣汉县| 大竹县| 遂昌县| 台湾省| 酒泉市| 古蔺县| 晴隆县| 沾化县| 玉树县| 奉节县| 阳城县| 尖扎县| 调兵山市| 犍为县| 祁连县| 突泉县| 特克斯县| 时尚| 青铜峡市| 通许县| 兴宁市| 扎鲁特旗| 武平县| 彝良县| 油尖旺区| 建阳市| 台南县|