Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA使用不同散列的相同对象_Java - Fatal编程技术网

JAVA使用不同散列的相同对象

JAVA使用不同散列的相同对象,java,Java,我在数据库中有两个来自数据库的对象它是同一个对象,但它们有不同的哈希: GroupType groupType = groupTypeDao.findById(3); GroupType groupType1 = groupTypeDao.findById(3); System.out.println(groupType); System.out.println(groupType1); 我得到这个输出: GroupType@6040 GroupType@6041 为什么呢?技术堆栈:Sp

我在数据库中有两个来自数据库的对象它是同一个对象,但它们有不同的哈希:

GroupType groupType  = groupTypeDao.findById(3);
GroupType groupType1 = groupTypeDao.findById(3);
System.out.println(groupType);
System.out.println(groupType1);
我得到这个输出:

GroupType@6040
GroupType@6041
为什么呢?技术堆栈:Spring、JavaFX、Hibernate


我还有一个关于Spring和Hibernate的项目。两个项目中的配置文件相同。Hibernate版本也相同。但在另一个项目中,这会产生相同的哈希代码。

您打印的是对象引用。如果您通过调用new来创建每个引用,它们确实是不同的


您需要根据有效的Java重写equals、hashCode和toString以获得所需的行为。

您打印的是对象引用。如果您通过调用new来创建每个引用,它们确实是不同的

您需要根据有效的Java重写equals、hashCode和toString以获得所需的行为。

System.out.printlngroupType通常在Java.lang.Object上调用toString方法,并打印:

getClass.getName+'@'+Integer.toHexStringhashCode

现在,HashCode可能有点误导,因为如果它没有被覆盖,那么

类对象定义的hashCode方法确实为不同的对象返回不同的整数

引用文档。

System.out.printlgroupType通常调用java.lang.Object上的toString方法,并打印:

getClass.getName+'@'+Integer.toHexStringhashCode

现在,HashCode可能有点误导,因为如果它没有被覆盖,那么

类对象定义的hashCode方法确实为不同的对象返回不同的整数


文档中的引号。

这些不是hashCode…请执行:groupType.hashCode和groupType1.hashCode,然后查看您得到了什么…这些是默认为hashCode的toString值。。。您可能还没有实现。您看到的是字符串修饰的标识哈希代码。请参阅java.lang.ObjecttoString以了解您获得的源代码。我尝试以编程方式在TableView中选择行。我将对象保存到数据库中,用TableView加载框架,从数据库中获取所有对象的列表,并将其放入TableView,如下所示:TableView.setItemslist;然后我试着选择这个物体并聚焦它。tableView.getSelectionModel.selectobject。但在列表中找不到对象,因为它有另一个哈希代码。行未选中,未突出显示。这些不是HashCodes…Do:groupType.hashCode和groupType1.hashCode,看看您得到了什么…这些是默认为hashCode的toString值。。。您可能还没有实现。您看到的是字符串修饰的标识哈希代码。请参阅java.lang.ObjecttoString以了解您获得的源代码。我尝试以编程方式在TableView中选择行。我将对象保存到数据库中,用TableView加载框架,从数据库中获取所有对象的列表,并将其放入TableView,如下所示:TableView.setItemslist;然后我试着选择这个物体并聚焦它。tableView.getSelectionModel.selectobject。但在列表中找不到对象,因为它有另一个哈希代码。行未选中,未高亮显示。