2012-03-12 11 views
0

まず、私は完全な休止状態の初心者です。Hibernateはdistinctで選択します - 内部結合ではどのように動作しますか?

オブジェクトがある場合、著者と著者には書籍のコレクションがあります(リスト名は「books」です)。あなたは(まだテストしていない)私が作っ次のクエリを使用して使用して、Hibernateのクエリを実行する場合

select distinct author from Author author inner join author.books as book 

個別のは、ここで正確に何をしますか?

私が尋ねる理由は、私は、このようなも

select distinct author.name ... 

として、select句で特定のプロパティを選択していないされているため、返されるオブジェクトのユニーク正確に何になりますか?

答えて

3

まず第1に、著者が本を書くと、多対多の関連があり、一対多ではありません。

つまり、クエリは少なくとも1冊の本を書いたすべての著者のリストを返します(それは内部結合の効果です)。そして、それぞれの著者は返されたリストの中に一度だけ入ります。

+0

質問を更新しました。ありがとうございました。そして、それが多対多の関係ではなく1:Nの関係であれば? – Joeblackdev

+0

何も変更されません。 –

+0

私の最後の質問です。 M:Nの代わりに1:Nになるようにスキーマを更新しました。だから私は(別のキーワードなしで)クエリを実行し、私は数百の記録を戻しました。その後、私は別個のキーワードを含め、このレコード数をいくつかのレコードに減らしました。私は 'distinct'キーワードを省略すると、どうして私は非常に多くの記録を取り戻すことができますか? (私が1:N - between Author:bookを持っているとき)言い換えれば、distinctキーワードが省略されたらどうなりますか?助けてくれてありがとう – Joeblackdev

関連する問題