2012-05-15 92 views
0

我有作者之間的ManyToMany關係。
表:作者
ID |命名針對非標準ManyToMany關係的HQL查詢

表:ASSIGN
*號| 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; 
} 

什麼是查詢來獲取作者的名字所有的書嗎?另外什麼是查詢來獲取作者姓名的所有書籍的名稱?

回答

1

您只需擁有兩個OneToMany關聯。您只需在查詢中使用連接,如Hibernate documentation over HQL中所述。

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

第二個查詢是一樣的,除非你只是希望這本書的名字:

select book.name from Author author ... 

旁註:你不應該命名分配booksauthors的您的收藏:這是非常令人困惑。將其命名爲assigns

+0

最後'where book.title =:title'。是的,這是真的 – Ilya

0

什麼是查詢以獲取作者姓名的所有書籍?

從書B,以便通過b.authors.author.name

什麼是查詢來獲取所有書籍的名字作者的名字?

從b.authors.author.name

書B爲了

選擇b.title你換入作者和書類標題和名字嗎?