我已经试了好几天,试图找到实现复合ID类的equals()和hashCode()方法的正确方式。
当我尝试更新主对象(Gara)时遇到的问题是:
- StackOverflow
- DuplicateKeyException:已经有一个具有相同标识符值的不同对象与会话相关联。
- org.hibernate.ObjectNotFoundException:不存在给定标识符的行。
我的复合ID类:
@Embeddable
public class GaraAgenziaId implements Serializable {
private static final long serialVersionUID = 4934033367128755763L;
static Logger logger = LoggerFactory.getLogger(GaraAgenziaId.class);
private Gara gara;
private Agenzia agenzia;
@ManyToOne
public Gara getGara() {
return gara;
}
public void setGara(Gara gara) {
this.gara = gara;
}
@ManyToOne
public Agenzia getAgenzia() {
return agenzia;
}
public void setAgenzia(Agenzia agenzia) {
this.agenzia = agenzia;
}
@Override
public String toString() {
return "GaraAgenziaId [Gara=" + gara + ", agenzia=" + agenzia
+ "]";
}
}
31*a + b
会不会有溢出的风险? - Mindwin Remember Monica