Rewriting the query using an explicit join work, but it does not lok look as elegant as the "member of":
{code} // TypedQuery<Person> q = em.createQuery("select p from Person p where :book member of p.embeddableBooks", Person.class); // q.setParameter("book", book1);
TypedQuery<Person> q = em.createQuery("select p from Person p join p.embeddableBooks b where b.name = :name and b.author = :author)", Person.class); q.setParameter("name", book1.getName()); q.setParameter("author", book1.getAuthor()); {code}
and the sql:
{noformat} select person0_.id as id1_0_, person0_.BOOK_AUTHOR as BOOK_AUTHOR2_0_, person0_.BOOK_NAME as BOOK_NAME3_0_, person0_.name as name4_0_, person0_.version as version5_0_ from Q_PERSON person0_ inner join Q_PERSON_BOOKS embeddable1_ on person0_.id=embeddable1_.Person_id where embeddable1_.name=? and embeddable1_.author=? {noformat}
|