2013-04-13 2 views
-2
나는 봄 3 사용하고

자바는 : 방법은

은 내 DTO 내부 등호 및 해시 코드를 오버라이드 (override) 중복 레코드를 방지 할 수없는 오전 검색 버튼을 클릭에, 데이타베이스에서 데이터를 표시 내 응용 프로그램에 대한 최대 절전 모드라고하기 같지 않음

이것은 내 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

라고 점점되지 않는 이유 귀하의 의견을 공유하십시오 : 당신은 제대로 equalshashCode을 구현 한

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

죄송합니다. empname.hashcode; – Kiran

+0

어떤 콜렉션을 사용하고 있습니까? –

4

.

다음 단계는 equals으로 정의되는 고유 항목을 보장하는 모음에 항목을 추가하는 것입니다.

귀하의 의견은 현재 ArrayList입니다.이 컬렉션은 아닙니다. 이것은 List의 구현이며 확장 가능한 색인 생성 모음이며 Array을 보조 모음으로 사용합니다.

HashSet을 사용해야합니다.

Set 인터페이스는 고유 항목을 보증하는 모음입니다. HashSet은 비교를 위해 equals을 사용하는 구현입니다. 자세한 내용은 javadoc을 참조하십시오.

+0

덕분에 많은 도움이되었습니다. – Kiran