因此,我正在创建一个搜索功能来查找包含 bookitems 的帖子,其中一个 bookitem 包含具有特定标题的书。
我试过这个查询:
SELECT p FROM Post p JOIN p.books b JOIN FETCH b.book bo WHERE bo.title LIKE '%hi%'
其中 books 是 BookItems 的列表,每个 BookItems 包含一本书
如果我从 netbeans 向服务器运行 JPQL,但是当我对 EntityManager 使用相同的查询时,我收到一个异常,即 b.book 之后的 bo 是一个意外符号。但我现在真的不知道该怎么做。
编辑 附加信息:堆栈跟踪:
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 后尝试使用 fetch 它会打印相同的错误但在 b 而不是 bo
运行 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();