hibernate annotation 复合主键写法

来源:互联网 发布:50知天命是什么意思 编辑:程序博客网 时间:2024/05/29 04:14


本文出自:http://blog.csdn.net/hongchangfirst

hibernate里边的复合主键是需要其他方式来声明的,需要先写一个主键类,把主键字段(如,tour_id和morph_id)封装在一个类里边,并实现hashCode和equals方法,保证hibernate可以确定一个主键,如下:

class Tour_MorphID implements Serializable {

private static final long serialVersionUID = 155771990L;
private Integer Tour_id;
private Integer Morph_id;
@Override
public int hashCode() {
int result = 1;
result = Tour_id.hashCode() + Morph_id.hashCode();
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final Tour_MorphID other = (Tour_MorphID) obj;
if (Tour_id == other.Tour_id && Morph_id == other.Morph_id)
return true;
return false;
}

getter...

setter...

}


然后在需要复合主键类的实体类里边写上@IdClass注解,如下:

@Entity
@IdClass(Tour_MorphID.class)
@Table(name = "Tour_Morph")
public class Tour_Morph implements Serializable {
serialVersionUID ..
@Id
@Column(name = "Tour_id")
private Integer Tour_id;
@Id
@Column(name = "Morph_id")
private Integer Morph_id;

//other fields...
getter...

setter...
}


好,这样就可以了。

原创粉丝点击