最新国产好看的视频,伊人天堂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、將組件類注解為@Embeddable,并將組件的屬性注解為@Id
2、將組件的屬性注解為@EmbeddedId
3、將類注解為@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; 

一、將組件類注解為@Embeddable

/** 
 * SysLogsDtoId代表主鍵類 
 */ 
package com.hibernate.dto; 
 
import javax.persistence.Embeddable; 
/** 
 * 1、主鍵類必須要實(shí)現(xiàn)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為表對(duì)象映射類,其中主鍵為主鍵類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)單,主鍵類只用定義主鍵字段,不需要寫任何注解。然后在對(duì)象類中在主鍵類的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為表對(duì)象映射類,其中主鍵為主鍵類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,并將該實(shí)體中所有屬于主鍵的屬性都注解為@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為表對(duì)象映射類,其中主鍵為主鍵類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使用入門圖文詳解

    IDEA+GIT使用入門圖文詳解

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

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

    這篇文章主要介紹了java使用compareTo實(shí)現(xiàn)一個(gè)類的對(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作為一門內(nèi)容豐富的編程語(yǔ)言,其中涉及的范圍是十分廣闊的,下面這篇文章主要給大家介紹了關(guān)于java中構(gòu)造方法及this關(guān)鍵字用法的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Spring?Bean自動(dòng)裝配入門到精通

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

    自動(dòng)裝配是使用spring滿足bean依賴的一種方法,spring會(huì)在應(yīng)用上下文中為某個(gè)bean尋找其依賴的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)依賴失敗問(wèn)題的方案詳解

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

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

最新評(píng)論

元谋县| 土默特左旗| 铁岭市| 延津县| 义马市| 宜兴市| 西藏| 枞阳县| 兴海县| 定日县| 两当县| 丰顺县| 油尖旺区| 越西县| 望城县| 普洱| 柳河县| 兴化市| 理塘县| 浪卡子县| 西吉县| 察哈| 漳平市| 保德县| 读书| 永定县| 新河县| 伊春市| 阿勒泰市| 中西区| 富民县| 疏勒县| 新干县| 德惠市| 隆化县| 灵川县| 吴忠市| 且末县| 四川省| 汤原县| 丰都县|