2016-10-12 10 views
0

異なるハッシュ値と同じオブジェクトには:Java。私は(それが同じオブジェクトであるデータベースで)データベースからの2つのオブジェクトを持っていますが、彼らは別のハッシュを持って

[email protected] 
[email protected] 

はなぜです:

GroupType groupType = groupTypeDao.findById(3); 
GroupType groupType1 = groupTypeDao.findById(3); 
System.out.println(groupType); 
System.out.println(groupType1); 

私はこの出力を取得しますそれ?テクノロジスタック:Spring、JavaFX、Hibernate

私はSpringとHibernateの別のプロジェクトを持っています。設定ファイルは2つのプロジェクトで同じです。 Hibernateのバージョンも同じです。しかし、別のプロジェクトでは、これは同じハッシュコードを生成します。

+0

これらは 'HashCodes'ではありません... – brso05

+0

' groupType.hashCode() 'と' groupType1.hashCode() 'はあなたが何を得るのかを見る... – brso05

+1

これはデフォルトで' toString'値です。 'hashCode()' ...あなたはおそらく実装されていないでしょう。 –

答えて

4

あなたが印刷したのはオブジェクト参照です。 newを呼び出すことによって各参照を作成した場合、それらは実際に異なっています。

「有効なJava」に従ってequals、hashCode、およびtoStringをオーバーライドして、必要な動作を取得する必要があります。

0

System.out.println(groupType)は通常、java.lang.Objectの上toString()メソッドを呼び出し、これが印刷されます。)

のgetClassを(のgetName()+ '@' + Integer.toHexString(のhashCode())

それは、その後上書きされていない場合ので、今、hashCode()は少し誤解を招く可能性が...

Objectクラスで定義されるhashCodeメソッドは、ジを返しません別個のオブジェクトのための擬似整数。

java.lang.Objectからの引用

関連する問題