I have this Many to Many relation on postgresql:
customer:
-
customer_id (PK),
-
name (PK)
book:
-
book_id(PK),
-
name(PK)
book_customer:
-
customer_id(PK),
-
book_id(PK)
I want to get the name of customers who borrowed a certain book, but when I write a query on Pg Admin, I get what I want, but when I write the same query on Hibernate, I get this error:
ERROR: Path expected for join! Path expected for join! at
org.hibernate.hql.internal.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:399)
at
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3920)
at
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3706)
at
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3584)
at
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:720)
at
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:576)
at
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:313)
at
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:261)
at
org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:272)
at
org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192)
at
org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
at
org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:118)
at
org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:78)
at
org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:158)
at
org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:611)
at
org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:720)
at
org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:745)
at
org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23)
at com.libary.LibraryJPA.App.main(App.java:60)
Here is my query:
select Customer.name, b.name
from Customer
inner join book_customer bc on Customer.customer_id = bc.customer_id
inner join Book b on bc.book_id = b.book_id
where b.book_id = 1
I understood from the other two posts that the path between the entities in the query should be given, or that it should no longer be used “on” in the queries, but whatever I do I still get this error.