国产探花免费观看_亚洲丰满少妇自慰呻吟_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;   }  } 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 务川| 咸阳市| 黎城县| 忻城县| 西畴县| 上杭县| 富宁县| 南澳县| 阳春市| 马尔康县| 彩票| 江华| 望谟县| 嘉禾县| 湖南省| 宜昌市| 溧阳市| 镇安县| 锡林郭勒盟| 台前县| 高雄市| 浙江省| 武平县| 定远县| 黄平县| 平谷区| 绵阳市| 酉阳| 五常市| 铁岭县| 塔河县| 西贡区| 麟游县| 莱西市| 北票市| 韶山市| 来宾市| 汉阴县| 思茅市| 千阳县| 黄梅县|