Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I do with HQL, many to many?

Tags:

hibernate

enter image description here

Here is my database structure. Relation many to many. I want to make a selection of authors who have written the same book. With SQL, I did. How do I do with 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]);
    }
like image 599
Noroc Sergey Avatar asked Jun 01 '12 19:06

Noroc Sergey


People also ask

Does HQL support order by group by?

In HQL we perform order by and group by for the given property of entity or associated entities.

Is HQL and JPQL same?

The Hibernate Query Language (HQL) and Java Persistence Query Language (JPQL) are both object model focused query languages similar in nature to SQL. JPQL is a heavily-inspired-by subset of HQL. A JPQL query is always a valid HQL query, the reverse is not true however.

Can we use select * in HQL?

Keywords like SELECT, FROM, and WHERE, etc., are not case sensitive, but properties like table and column names are case sensitive in HQL.


1 Answers

Assuming the entity names are Book and Author and that Book has authors attribute:

select a.firstName, a.lastName from Book b join b.authors a where b.id = :id
like image 157
Steve Ebersole Avatar answered Oct 30 '22 07:10

Steve Ebersole