2013-04-13 38 views
-2

我使用Spring 3,休眠我的應用程序,它從DATABSE顯示在搜索按鈕的Java:equals方法沒有得到所謂的

我無法通過重寫我的DTO內equals和hashCode避免重複記錄的點擊數據

這是我的Employee DTO類,equals方法根本沒有被調用。 請分享您的意見,爲什麼等號是沒有得到所謂的

package com.jstlview.hlo; 
import java.util.Date; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="EMPLOYEE") 
public class EmpHLO { 
    private String empname,job; 
    private int empno,deptno; 
    private double salary,comm; 
    private Date hiredate; 

    @Column(name="EMPNAME") 
    public String getEmpname() { 
     return empname; 
    } 
    public void setEmpname(String empname) { 
     this.empname = empname; 
    } 
    @Column(name="JOB") 
    public String getJob() { 
     return job; 
    } 
    public void setJob(String job) { 
     this.job = job; 
    } 
    @Id 
    @Column(name="EMPNO") 
    public int getEmpno() { 
     return empno; 
    } 
    public void setEmpno(int empno) { 
     this.empno = empno; 
    } 
    @Column(name="DEPTNO") 
    public int getDeptno() { 
     return deptno; 
    } 
    public void setDeptno(int deptno) { 
     this.deptno = deptno; 
    } 
    @Column(name="SALARY") 
    public double getSalary() { 
     return salary; 
    } 
    public void setSalary(double salary) { 
     this.salary = salary; 
    } 
    @Column(name="COMMISION") 
    public double getComm() { 
     return comm; 
    } 
    public void setComm(double comm) { 
     this.comm = comm; 
    } 
    @Column(name="HIREDATE") 
    public Date getHiredate() { 
     return hiredate; 
    } 
    public void setHiredate(Date hiredate) { 
     this.hiredate = hiredate; 
    } 

@Override 
    public int hashCode() 
    { 
       System.out.println("Inside hashcode"); 
     return empname.hashcode; 
    } 
    @Override 
    public boolean equals(Object obj) 
    { 
     System.out.println("Into Equals Method"); 
     boolean flag = false; 
     EmpHLO emp = (EmpHLO)obj; 
     if(emp.empname.equals(empname)) 
      flag = true; 
     return flag; 
    } 
} 
+0

你是如何消除重複?它不會神奇地發生... –

+0

我知道它不是魔法,但在這裏看到等於上面的方法 – Kiran

+0

是的,你有方法,但你有什麼想要打電話給他們?你正在使用'Set'嗎? –

回答

1

你必須在你的hashCode方法來看一看:

@Override 
public int hashCode() 
{ 
      System.out.println("Inside hashcode"); 
    return empname; // Cannot return string value 
} 
+1

抱歉empname.hashcode; – Kiran

+0

你正在使用哪個集合? –

4

您正確實施equalshashCode

下一步是將項目添加到保證由equals定義的唯一項目的集合。

根據您的意見,您正在使用ArrayList - 這不是一個集合。這是一個List的實現,它是一個可擴展的索引集合,它使用Array作爲後備集合。您需要使用HashSet

Set接口用於保證唯一項目的集合。 HashSet是一個使用equals進行比較的實現。看看javadoc瞭解更多信息。

+0

非常感謝,這是很大的幫助 – Kiran

相關問題