paulwong

重写toString(),hashCode()和equals()的简便方法

使用APACHE的LANG包中的相关类,可简写很多。


    public String toString() {   
        
return ToStringBuilder.reflectionToString(this,   
                ToStringStyle.MULTI_LINE_STYLE);   
    }
   
  
    
public boolean equals(Object o) {   
        
return EqualsBuilder.reflectionEquals(this, o);   
    }
   
  
    
public int hashCode() {   
        
return new HashCodeBuilder(1737)   
                    .append(id)   
                    .append(name)   
                    .append(state)   
                    .toHashCode();   
    }
  



如果PO中有SET的集合对象,并且配置了HIBERNATE中的lazy="true",则算HASHCODE不能用反射的方法,只能一个属性一个属性的累加计算HASHCODE,集合SET不算HASHCODE,否则会抛LazyInitializationException。继承的子类可以用这种方法加以覆盖:


public int hashCode() {   
        
return new HashCodeBuilder(1737)   
                    .appendSuper(
super.hashCode())
                    .append(code)
                    .toHashCode();   
    }
 


posted on 2009-05-08 13:50 paulwong 阅读(602) 评论(0)  编辑  收藏 所属分类: HIBERNATE


只有注册用户登录后才能发表评论。


网站导航: