最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java  hibernate使用注解來(lái)定義聯(lián)合主鍵

 更新時(shí)間:2017年01月19日 09:45:15   投稿:lqh  
這篇文章主要介紹了java hibernate使用注解來(lái)定義聯(lián)合主鍵的相關(guān)資料,需要的朋友可以參考下

java  hibernate使用注解來(lái)定義聯(lián)合主鍵

下面使用hibernate的API中說(shuō)明的三種方式來(lái)定義主鍵,主要使用Annotation來(lái)定義hibernate中的聯(lián)合主鍵

下面取至hibernate的API文檔:

定義組合主鍵的幾種語(yǔ)法:

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

下面就分別使用這三種方式來(lái)定義聯(lián)合主鍵。

建表的SQL語(yǔ)句:

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; 

一、將組件類(lèi)注解為@Embeddable

/** 
 * SysLogsDtoId代表主鍵類(lèi) 
 */ 
package com.hibernate.dto; 
 
import javax.persistence.Embeddable; 
/** 
 * 1、主鍵類(lèi)必須要實(shí)現(xiàn)java.io.Serializable接口 
 * 2、主鍵類(lèi)必須要重寫(xiě)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為表對(duì)象映射類(lèi),其中主鍵為主鍵類(lèi)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

這種情況最簡(jiǎn)單,主鍵類(lèi)只用定義主鍵字段,不需要寫(xiě)任何注解。然后在對(duì)象類(lèi)中在主鍵類(lèi)的get方法上加上@EmbeddedId注解。

/** 
 * SysLogsDtoId代表主鍵類(lèi) 
 */ 
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為表對(duì)象映射類(lèi),其中主鍵為主鍵類(lèi)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; 
  } 
 
} 

三、將類(lèi)注解為@IdClass,并將該實(shí)體中所有屬于主鍵的屬性都注解為@Id

/** 
 * SysLogsDtoId代表主鍵類(lèi) 
 */ 
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為表對(duì)象映射類(lèi),其中主鍵為主鍵類(lèi)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; 
  } 
 
} 

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

相關(guān)文章

  • 如何在pom文件中引入本地jar包并打包

    如何在pom文件中引入本地jar包并打包

    在項(xiàng)目中使用本地JAR文件的方法有很多,下面這篇文章主要給大家介紹了關(guān)于如何在pom文件中引入本地jar包并打包的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • IDEA+GIT使用入門(mén)圖文詳解

    IDEA+GIT使用入門(mén)圖文詳解

    這篇文章主要介紹了IDEA+GIT使用入門(mén)詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • java使用compareTo實(shí)現(xiàn)一個(gè)類(lèi)的對(duì)象之間比較大小操作

    java使用compareTo實(shí)現(xiàn)一個(gè)類(lèi)的對(duì)象之間比較大小操作

    這篇文章主要介紹了java使用compareTo實(shí)現(xiàn)一個(gè)類(lèi)的對(duì)象之間比較大小操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • java實(shí)現(xiàn)區(qū)域內(nèi)屏幕截圖示例

    java實(shí)現(xiàn)區(qū)域內(nèi)屏幕截圖示例

    這篇文章主要介紹了java截圖示例,需要的朋友可以參考下
    2014-04-04
  • SpringBoot全局異常處理機(jī)制和配置攔截器方式

    SpringBoot全局異常處理機(jī)制和配置攔截器方式

    這篇文章主要介紹了SpringBoot全局異常處理機(jī)制和配置攔截器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java中構(gòu)造方法及this關(guān)鍵字的用法實(shí)例詳解(超詳細(xì))

    java中構(gòu)造方法及this關(guān)鍵字的用法實(shí)例詳解(超詳細(xì))

    大家都知道,java作為一門(mén)內(nèi)容豐富的編程語(yǔ)言,其中涉及的范圍是十分廣闊的,下面這篇文章主要給大家介紹了關(guān)于java中構(gòu)造方法及this關(guān)鍵字用法的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Spring?Bean自動(dòng)裝配入門(mén)到精通

    Spring?Bean自動(dòng)裝配入門(mén)到精通

    自動(dòng)裝配是使用spring滿足bean依賴(lài)的一種方法,spring會(huì)在應(yīng)用上下文中為某個(gè)bean尋找其依賴(lài)的bean,Spring中bean有三種裝配機(jī)制,分別是:在xml中顯式配置、在java中顯式配置、隱式的bean發(fā)現(xiàn)機(jī)制和自動(dòng)裝配
    2022-08-08
  • springboot自定義Starter的具體流程

    springboot自定義Starter的具體流程

    這篇文章主要介紹了springboot自定義Starter的具體流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java局部變量線程安全原理分析

    Java局部變量線程安全原理分析

    這篇文章主要介紹了Java局部變量線程安全原理分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Spring處理@Async導(dǎo)致的循環(huán)依賴(lài)失敗問(wèn)題的方案詳解

    Spring處理@Async導(dǎo)致的循環(huán)依賴(lài)失敗問(wèn)題的方案詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot中的@Async導(dǎo)致循環(huán)依賴(lài)失敗的原因及其解決方案,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-07-07

最新評(píng)論

福贡县| 乡宁县| 财经| 西平县| 荣昌县| 崇州市| 福海县| 平罗县| 喜德县| 尚义县| 兰州市| 苍南县| 晋城| 吴江市| 安图县| 西峡县| 新泰市| 长沙县| 霍城县| 印江| 镇平县| 陆良县| 刚察县| 河津市| 泽库县| 普兰县| 太保市| 巫溪县| 汉中市| 东乡族自治县| 衡山县| 乳源| 土默特右旗| 保靖县| 曲阜市| 新乐市| 阳朔县| 拜城县| 南郑县| 连州市| 黄梅县|