Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 Hibernate select with distinct-如何处理内部联接?_Java_Hibernate_Hql_Distinct - Fatal编程技术网

Java Hibernate select with distinct-如何处理内部联接?

Java Hibernate select with distinct-如何处理内部联接?,java,hibernate,hql,distinct,Java,Hibernate,Hql,Distinct,首先,我完全是一个冬眠新手 在hibernate中,如果您有一个对象,那么假设author和author有一个图书集合(假设列表名为“books”)。如果运行Hibernate查询,请使用我编写的以下查询(尚未测试) distinct将在这里做什么 我询问的原因是因为我没有在select子句中选择特定的属性,例如 select distinct author.name ... 另外,返回的对象的唯一性是什么 首先,如果作者合著书籍,你会有多对多的联想,而不是一对多 也就是说,查询将返回至少写过

首先,我完全是一个冬眠新手

在hibernate中,如果您有一个对象,那么假设author和author有一个图书集合(假设列表名为“books”)。如果运行Hibernate查询,请使用我编写的以下查询(尚未测试)

distinct将在这里做什么

我询问的原因是因为我没有在select子句中选择特定的属性,例如

select distinct author.name ...

另外,返回的对象的唯一性是什么

首先,如果作者合著书籍,你会有多对多的联想,而不是一对多


也就是说,查询将返回至少写过一本书的所有作者的列表(这是内部联接的效果)。每个作者在返回的列表中只会出现一次。

首先,如果作者合著书籍,你会有多对多的关联,而不是一对多的关联


也就是说,查询将返回至少写过一本书的所有作者的列表(这是内部联接的效果)。每个作者在返回的列表中只会出现一次。

我已经更新了我的问题,谢谢你的帮助。如果是1:N的关系而不是多对多的关系?我的最后一个问题。我更新了模式,使其为1:N而不是M:N。因此,我运行了查询(没有distinct关键字),并获得了数百条记录。然后我加入了distinct关键字,记录的数量减少到只有几个记录。当我省略'distinct'关键字时,为什么会得到这么多记录?(当我有一个1:N-between-Author:book)换句话说,当distinct关键字被省略时会发生什么?感谢您的帮助当您不使用distinct关键字时,Hibernate将为基础SQL查询返回的每个JDBC行返回一个包含一个元素的列表。这意味着在返回的列表中会多次出现相同的author实例。我有这种感觉。但是,如果书籍是作者内部的集合,为什么在返回的列表中会有重复的作者?这是因为(正如你所提到的)你有一个作者,每行一本书?谢谢你的回答,这很有帮助。是的,就是这样。看看生成的SQL查询是什么,然后自己执行,你就会明白了。我已经更新了我的问题,谢谢你。如果是1:N的关系而不是多对多的关系?我的最后一个问题。我更新了模式,使其为1:N而不是M:N。因此,我运行了查询(没有distinct关键字),并获得了数百条记录。然后我加入了distinct关键字,记录的数量减少到只有几个记录。当我省略'distinct'关键字时,为什么会得到这么多记录?(当我有一个1:N-between-Author:book)换句话说,当distinct关键字被省略时会发生什么?感谢您的帮助当您不使用distinct关键字时,Hibernate将为基础SQL查询返回的每个JDBC行返回一个包含一个元素的列表。这意味着在返回的列表中会多次出现相同的author实例。我有这种感觉。但是,如果书籍是作者内部的集合,为什么在返回的列表中会有重复的作者?这是因为(正如你所提到的)你有一个作者,每行一本书?谢谢你的回答,这很有帮助。是的,就是这样。看看生成的SQL查询是什么,然后自己执行它,您就会明白了。
select distinct author.name ...