hibernate复合主键:hibernate(jpa)复合主键annotation声明思路方法

 CREATE TABLE TB_HOUR_DATA(STAT_DATEDATE NOTNULL,PATH_IDNUMBER(20)NOT NULL,VALUEVARCHAR2(512 BYTE),TYPENUMBER(1)NOT NULL)

  其中复合主键为(STAT_DATEPATH_IDTYPE)

  针对这种情况hibernate(jpa) annotation 映射声明如下:

  1、复合主键类HourDataPK

  package net.kong.wolf.stat.db.entity;

  import java.io.Serializable;import java.util.Date;

  importjavax.persistence.Column;importjavax.persistence.ddable;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;importjavax.persistence.Temporal;importjavax.persistence.TemporalType;

  @ddablepublic HourDataPK implements Serializable

  /** *//*** */private final long serialVersionUID = 1L;

  @ManyToOne@JoinColumn(name = "path_id", nullable =false)privatePath path;

  @Column(name ="stat_date")@Temporal(TemporalType.DATE)privateDate statDate;

  private type;

  public Path getPath path;

  public void Path(Path path) this.path = path;

  public Date getStatDate statDate;

  public void StatDate(Date statDate) this.statDate=statDate;

  public getType type;

  public void Type( type) this.type = type;

  2、实体类HourData: package net.kong.wolf.stat.db.entity;

  import java.io.Serializable;

  importjavax.persistence.ddedId;importjavax.persistence.Entity;importjavax.persistence.Table;

  import net.kong.wolf.stat.core.Text;

  @Entity@Table(name = "TB_HOUR_DATA")public HourDataimplements Serializable

  /** *//*** */private final long serialVersionUID = 1L;

  @ddedIdprivate HourDataPK pk;

  private String value;

  public String getValue value;

  public getHours parseValue(value);

  private parseValue(String value) result = [24];for( i = 0; i < 24; i) result[i] = -1; (valuenull) result;String hs = Text.splitCSV(value); len =Math.min(24,hs.length);for ( i = 0; i < len; i) result[i]=Text.parseInt(hs[i], -1); result;

  public HourDataPK getPk pk;

  public void Pk(HourDataPK pk) this.pk = pk;

Tags:  hibernate主键 hibernatejpa annotation主键 hibernate复合主键

延伸阅读

最新评论

发表评论