组件作为联合标识符,必须满足:
它必须实现java.io.Serializable接口
它必须重新实现equals()和hashCode()方法, 始终和组合关键字在数据库中的概念保持一致
你不能使用一个IdentifierGenerator产生组合关键字。一个应用程序必须分配它自己的标识符。
【注意:在Hibernate3中,第二个要求并非是Hibernate强制必须的。但最好这样做。】
public class CompositeId implements Serializable{
private int orderId;
private int itemId;
public int getItemId() {
return itemId;
}
public void setItemId(int itemId) {
this.itemId = itemId;
}
public int getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
@Override
public int hashCode() {
return (orderId + itemId)^2;
}
}
public class OrderDetail {
private CompositeId id;
private int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public CompositeId getId() {
return id;
}
public void setId(CompositeId id) {
this.id = id;
}
}