そのため、特定のタイトルの本が 1 つの本アイテムに含まれている本アイテムを含む投稿を検索する検索機能を作成しています。
私はこのクエリを試しました:
SELECT p FROM Post p JOIN p.books b JOIN FETCH b.book bo WHERE bo.title LIKE '%hi%'
ここで、books はそれぞれ 1 つの Book を含む BookItems のリストです
そして、netbeans からサーバーに向かって JPQL を実行している場合は機能しますが、EntityManager で同じクエリを使用すると、b.book の後の bo が予期しないシンボルであるという例外を受け取ります。しかし、私は今、他にそれを行う方法を本当に知りません。
EDIT 追加情報: スタックトレース:
Caused by: Exception [EclipseLink-8025] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing the query [SELECT p FROM Post p JOIN p.books b JOIN FETCH b.book bo WHERE bo.title LIKE :title], line 1, column 54: unexpected token [bo].
Internal Exception: NoViableAltException(80@[()* loopback of 477:9: (node= join )*])
最初の JOIN の後にフェッチを試みると、同じエラーが出力されますが、bo ではなく b に出力されます
JPQL実行時のコード:
query = em.createQuery("SELECT p FROM Post p JOIN p.books b JOIN FETCH b.book bo WHERE bo.title LIKE :title", Post.class);
query.setParameter("title", "%"+searchString+"%");
posts = query.getResultList();