日期:2014-05-20  浏览次数:20735 次

JPA联合主键
create table a(
  id int primary key auto_increment,
  name char(10)
);

create table b(
  a_id int,
  id int,
  name char(10),
  primary key(a_id,id)
);
像这样表结构该怎么建立实体类,
。。求救。。谢谢

------解决方案--------------------
有两种方式定义“联合主键”,分别为:Primary-Key Classes和Composite Keys。它们相对应的annotation分别为:@IdClass和@EmbeddedId。
下面的例子是参考《Enterprise JavaBean 3.0》的
背景为:
1) 表中的字段有: firstName, lastName, ssn
2)“联合主键”有: lastName和ssn。
===
Primary-Key Classes方式
===
1. 先定义一个primary-key class,这个class的要求有:
1)serializable, 2)有无参构造函数, 3)实现方法equals( )和hashCode( ) 
比如:
Java code

public class CustomerPK 
 implements java.io.Serializable {
   private String lastName;
   private long ssn;

   public CustomerPK( ) {}
   public boolean equals(Object obj){...}
   public int hashCode( ) {...}
}