2012-06-01 9 views
10

enter image description here多くの人から多くの人へのHQLのやり方は?

ここは自分のデータベース構造です。多くの人との関係。私は同じ本を書いた作家を選びたいSQLを使って、私はしました。 HQLをどうすればいいですか?エンティティ名を想定し

Query query = session.createSQLQuery("SELECT FirstName, LastName FROM authors, books, author_book as ab WHERE ab.authorID=authors.authorID AND ab.bookID = books.bookID AND ab.bookID = :id"); 
    query.setInteger("id", 1); 
    List list = query.list(); 
    Iterator<Object[]> iter = list.iterator(); 
    while (iter.hasNext()) { 
     Object[] obj = iter.next(); 
     System.out.println(obj[0] + " " + obj[1]); 
    } 

答えて

17

帳や著者であり、ブック作成者属性たこと:

select a.firstName, a.lastName from Book b join b.authors a where b.id = :id 
+0

スティーブエバーソール - ありがとうございます! –

0

は、私たちは、エンティティの著者、書籍、AuthorBookを見てみましょう。

次のクエリを試すことができますか。

String hql = "select a.firstName, a.lastName from Authors a, Books b, AuthorBook ab where ab.authorId=a.authorId and ab.bookId=b.bookId and ab.bookId=:id"; 

List<Object[]> resultList = session.createQuery(hql).setInteger("id", 1).list(); 

for(Object[] result : resultList) 
{ 

     System.out.println("First Name : " + result[0]); 
     System.out.println("Last Name : " + result[1]); 
} 
関連する問題