2012-05-15 3 views
0

사이에 ManyToMany 관계가 있습니다.
테이블 : 작성자
id |비표준 ManyToMany 관계에 대한 HQL 쿼리

테이블 이름 : ASSIGN
* ID를 | author_id | book_id *

테이블 : BOOK
ID | 제목

하지만하지의 standart ManyToMany 매핑을 사용하고, 나는

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 ... 

사이드 참고 : 할당합니다 books 또는 authors의 컬렉션 이름을 안 : 그것은 매우 혼란입니다. 이름을 assigns으로 지정하십시오.

+0

'where book.title = : title'. 네, 맞습니다. – Ilya

0

저자명에 대한 모든 도서를 가져 오는 쿼리는 무엇입니까? 저자의 이름에 대한 모든 책의 이름을 얻을 쿼리가 무엇 b.authors.author.name

에 의해 순서 나 책에서

?

b.authors.author.name

으로 예약 B 명령에서

선택 b.title은 당신이 저자 및 예약 클래스에서 제목과 이름을 바꾼 적이 ?