首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JPA引文实现联合主键

2012-09-01 
JPA注解实现联合主键当表中一个主键不能唯一标识一条记录的时候,就需要使用联合主键了,下面是使用JPA注解

JPA注解实现联合主键

当表中一个主键不能唯一标识一条记录的时候,就需要使用联合主键了,下面是使用JPA注解实现联合主键的代码

1?首先需要建立一个复合主键类,用来存放需要生产联合主键的属性,该类需要实现序列化。

package?com.ericsson.adp.entity.cons;

import?java.io.Serializable;

public?class?ConsumerGroupMapPK?implements?Serializable{

????private?String?msisdn;//电话号码

????private?Long?tagGroupId;//(10)标签组id

????public?String getMsisdn() {

???????return?msisdn;

????}

????public?void?setMsisdn(String msisdn) {

???????this.msisdn?= msisdn;

????}

????public?Long getTagGroupId() {

???????return?tagGroupId;

????}

????public?void?setTagGroupId(Long tagGroupId) {

???????this.tagGroupId?= tagGroupId;

????}

}

?

然后再写一个类,该类对应数据库中的表,在该类中需要使用@IdClass(ConsumerGroupMapPK.class)引入上面写的复合主键类

同时在需要做成联合主键的属性上面加上@Id标明该属性是主键就好了

package?com.ericsson.adp.entity.cons;

?

import?javax.persistence.EmbeddedId;

import?javax.persistence.Entity;

import?javax.persistence.Id;

import?javax.persistence.IdClass;

import?javax.persistence.Table;

?

import?org.hibernate.annotations.Cache;

import?org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity

@IdClass(ConsumerGroupMapPK.class)

@Table(name="T_CONS_CONSUMER_GROUP_MAP")

@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)

public?class?ConsumerGroupMap{

????@Id

????private?String?msisdn;//电话号码

????@Id

????private?Long?tagGroupId;//(10)标签组id

???

????public?ConsumerGroupMap() {

???????super();

???????//?TODO?Auto-generated constructor stub

????}

????public?ConsumerGroupMap(String msisdn, Long tagGroupId) {

???????super();

???????this.msisdn?= msisdn;

???????this.tagGroupId?= tagGroupId;

????}

???

????public?String getMsisdn() {

???????return?msisdn;

????}

????public?void?setMsisdn(String msisdn) {

???????this.msisdn?= msisdn;

????}

????public?Long getTagGroupId() {

???????return?tagGroupId;

????}

????public?void?setTagGroupId(Long tagGroupId) {

???????this.tagGroupId?= tagGroupId;

????}

???

}

热点排行