日期:2014-05-19  浏览次数:20686 次

hibernate联合主键序列化问题,急!!!!
对象要写到数据库中必须序列化,那为什么联合主键的那个类要序列化,其他的类不需要序列化?如下所示:为什么Teacher类不需要序列化,而TeacherPK类需要序列化?
@Entity
@Table(name="_Teacher")
public class Teacher {

  private String title;
private TeacherPK pk;

  @EmbeddedId
  public TeacherPK getPk() {
return pk;
}
public void setPk(TeacherPK pk) {
this.pk = pk;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}

public class TeacherPK implements Serializable{
private int id;
  private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if(o instanceof TeacherPK){
TeacherPK pk=(TeacherPK)o;
if(this.id==pk.getId()&this.name.equals(pk.getName())){

}
}
return super.equals(o);
}
//之所以要重写下面的方法,是预防对象被放到哈希表里面的
@Override
public int hashCode() {
return this.name.hashCode();
}
}


------解决方案--------------------
get(Class clazz, Serializable id) 
这是读取对象时的方法,需要一个可序列号的id读取。