0

著者の間にManyToManyの関係があります。
テーブル:著者
ID | 名前

テーブル:ASSIGN
* id | author_id | book_id *

テーブル:BOOK
ID | タイトル

しかし、私は標準の多対多マッピングではなく、次に使用しています

class Book
{
   @Id
   long id;

   String title;

   @OneToMany
   List<Assign> authors;
}

class Assign
{
   @Id
   long id;

   @ManyToOne
   Book book

   @ManyToOne
   Author author;
}

class Author
{
   @Id
   long id;

   String name;

   @OneToMany
   List<Assign> books;
}  

著者の名前のすべての本を取得するためのクエリとは何ですか?また、著者の名前のすべての本の名前を取得するためのクエリとは何ですか?

4

2 に答える 2

1

単純に2つのOneToManyアソシエーションがあります。HQLのHibernateドキュメントで説明されているように、クエリで結合を使用する必要があります。

select book from Author author 
left join author.books assign
left join assign.book book
where author.name = :name

2番目のクエリは同じですが、本の名前だけが必要な点が異なります。

select book.name from Author author ...

補足:Assignsのコレクションに名前を付けないでください。booksまたはauthors:非常に紛らわしいです。名前を付けassignsます。

于 2012-05-15T14:45:28.397 に答える
0

著者の名前のすべての本を取得するためのクエリとは何ですか?

ブックbからb.authors.author.nameによる注文

著者の名前のすべての本の名前を取得するためのクエリとは何ですか?

b.authors.author.nameによるブックbの注文からb.titleを選択します

著者と本のクラスでタイトルと名前を入れ替えましたか?

于 2012-05-15T14:47:39.637 に答える