WEB开发网
开发学院软件开发Java hibernate annoation (六 复合主键) 阅读

hibernate annoation (六 复合主键)

 2009-09-18 00:00:00 来源:WEB开发网   
核心提示:主键类:定义为@Embeddable@EmbeddablepublicclassF{privateintid;privateintid2;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicintgetId2(){returnid2;}

主键类:定义为@Embeddable

@Embeddable 
public class F { 
 private int id; 
 private int id2; 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public int getId2() { 
 return id2; 
 } 
 public void setId2(int id2) { 
 this.id2 = id2; 
 } 
 
}

持久化类:

@Entity 
@Table(name="E_USER",uniqueConstraints={ 
 @UniqueConstraint(columnNames={"yahoo"}) 
 }) 
@IdClass(F.class)//将F作为主键类 
public class User { 
 private int id; 
 private int id2; 
//id id2必须和F中的属性一致 
 private String yahoo; 
 @Id 
 @GeneratedValue(strategy=GenerationType.IDENTITY) 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 @Id 
 @GeneratedValue(strategy=GenerationType.IDENTITY) 
 public int getId2() { 
 return id2; 
 } 
 public void setId2(int id2) { 
 this.id2 = id2; 
 } 
 public String getYahoo() { 
 return yahoo; 
 } 
 public void setYahoo(String yahoo) { 
 this.yahoo = yahoo; 
 } 
 
}

最终生成sql:(mysql)

create table E_USER (id integer not null, id2 integer not null, yahoo varchar(255), primary key (id, id2), unique (yahoo))

Tags:hibernate annoation 复合

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接