java jpa 注解外键_jpa中复合主键并且都是外键,请问怎么写注解?

在设计数据库表的时候,往往会设计出带有复合主键的表,即表的记录由多个字段联合标识,如:

CREATETABLETB_HOUR_DATA(STAT_DATEDATENOTNULL,PATH_IDNUMBER(20)NOTNULL,VALUEVARCHAR2(512BYTE),TYPENUMBER(1)NOTNULL)

其中,复合主键为(STAT_DATE,PATH_ID,TYPE)

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

1、复合主键类HourDataPK

packagenet.kong.wolf.stat.db.entity;importjava.io.Serializable;importjava.util.Date;importjavax.persistence.Column;importjavax.persistence.Embeddable;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;importjavax.persistence.Temporal;importjavax.persistence.TemporalType;@EmbeddablepublicclassHourDataPKimplementsSerializable{/***//****/privatestaticfinallongserialVersionUID=1L;@ManyToOne@JoinColumn(name="path_id",nullable=false)privatePathpath;@Column(name="stat_date")@Temporal(TemporalType.DATE)privateDatestatDate;privateinttype;publicPathgetPath(){returnpath;}publicvoidsetPath(Pathpath){this.path=path;}publicDategetStatDate(){returnstatDate;}publicvoidsetStatDate(DatestatDate){this.statDate=statDate;}publicintgetType(){returntype;}publicvoidsetType(inttype){this.type=type;}}

2、实体类HourData:

packagenet.kong.wolf.stat.db.entity;importjava.io.Serializable;importjavax.persistence.EmbeddedId;importjavax.persistence.Entity;importjavax.persistence.Table;importnet.kong.wolf.stat.core.Text;@Entity@Table(name="TB_HOUR_DATA")publicclassHourDataimplementsSerializable{/***//****/privatestaticfinallongserialVersionUID=1L;@EmbeddedIdprivateHourDataPKpk;privateStringvalue;publicStringgetValue(){returnvalue;}publicvoidsetValue(Stringvalue){this.value=value;}publicint[]getHours(){returnparseValue(value);}privateint[]parseValue(Stringvalue){int[]result=newint[24];for(inti=0;i<24;i++){result[i]=-1;}if(value==null){returnresult;}String[]hs=Text.splitCSV(value);intlen=Math.min(24,hs.length);for(inti=0;i

===

网上可以找到很多资料的啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值