PK가 두 개의 짧은 varchar (15와 5)와 하나의 datetime 필드로 구성된 테이블을 가지고 있습니다.Hibernate 복합 키에 대한 bulletprooh hashCode 생성
hashCode 만들기에 대한 나의 생각은 datetime을 yyyyMMddHHmmss와 같은 형식으로 구성한 다음 일부 구분 기호 (예 : _)를 사용하여 다른 두 필드와 연결 한 다음 해당 문자열에 대한 해시 코드를 요청하는 것이 었습니다.
더 세련된 접근 방식이 궁금합니다.
감사
이 질문은 최대 절전 모드와 관련이 없습니다. 해시 코드를 작성하는 가장 좋은 방법을 따르십시오 (여러 번 묻고 답했습니다). 기본적으로 여러 필드가있는 객체의 해시 코드를 계산하려면 각 개별 필드에 대한 해시 코드를 계산하고 어떤 방식으로 결합합니다 (xor 추가 등). – JimN
내 관심사는 두 개의 숫자를 더하면 다른 두 개의 완전히 다른 숫자를 더하는 것과 같은 결과를 산출한다는 것입니다. 예 : 5 + 6 = 7 + 4. 그래서이 방법을 사용하기를 주저합니다. – amphibient
두 객체가 동일한 해시 코드를 생성하는 것은 합법적입니다. 이것을 해시 콜리 전 (hash collision)이라고하며, 대부분의 경우 피할 수 없습니다. 해시 코드에 의존하는 데이터 구조는 버킷 체인 또는 선형 프로빙과 같은 기법을 사용하여 해시 콜리 전을 처리 할 수 있도록 준비되어야합니다. – JimN