java - JPQL query - inner join no data type for node -
i have following jpql query used select programmes featuring performer specified id.
the channelprogramme entity has programme , episode
there entity called progepperfassociation, featuring programmeid, performerid , episodeid. (a performer can feature in many programmes , episodes , programme/episode can feature many performers)
@query("select cp channelprogramme cp" + " cp.programme.programmeid in (select programme progepperfassociation prog" + " inner join prog.performer perf" + " prog.performerid in :performerid)" + " , (cp.starttime between :fromdate , :todate)" + " order cp.starttime, cp.starttime")
however getting following exception
caused by: java.lang.illegalargumentexception: validation failed query method public abstract java.util.list com.tvfreakz.repository.channelprogrammerepository.findscheduledperformerprogrammes(java.lang.long,java.util.date,java.util.date)! @ org.springframework.data.jpa.repository.query.simplejpaquery.validatequery(simplejpaquery.java:84) @ org.springframework.data.jpa.repository.query.simplejpaquery.<init>(simplejpaquery.java:54) @ org.springframework.data.jpa.repository.query.jpaqueryfactory.frommethodwithquerystring(jpaqueryfactory.java:65) @ org.springframework.data.jpa.repository.query.jpaqueryfactory.fromqueryannotation(jpaqueryfactory.java:48) @ org.springframework.data.jpa.repository.query.jpaquerylookupstrategy$declaredquerylookupstrategy.resolvequery(jpaquerylookupstrategy.java:115) @ org.springframework.data.jpa.repository.query.jpaquerylookupstrategy$createifnotfoundquerylookupstrategy.resolvequery(jpaquerylookupstrategy.java:166) @ org.springframework.data.jpa.repository.query.jpaquerylookupstrategy$abstractquerylookupstrategy.resolvequery(jpaquerylookupstrategy.java:69) @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.<init>(repositoryfactorysupport.java:320) @ org.springframework.data.repository.core.support.repositoryfactorysupport.getrepository(repositoryfactorysupport.java:169) @ org.springframework.data.repository.core.support.repositoryfactorybeansupport.initandreturn(repositoryfactorybeansupport.java:224) @ org.springframework.data.repository.core.support.repositoryfactorybeansupport.afterpropertiesset(repositoryfactorybeansupport.java:210) @ org.springframework.data.jpa.repository.support.jparepositoryfactorybean.afterpropertiesset(jparepositoryfactorybean.java:92) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1612) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1549) ... 40 more caused by: java.lang.illegalstateexception: no data type node: org.hibernate.hql.internal.ast.tree.identnode \-[ident] identnode: 'programme' {originaltext=programme} @ org.hibernate.hql.internal.ast.tree.selectclause.initializeexplicitselectclause(selectclause.java:174) @ org.hibernate.hql.internal.ast.hqlsqlwalker.useselectclause(hqlsqlwalker.java:924) @ org.hibernate.hql.internal.ast.hqlsqlwalker.processquery(hqlsqlwalker.java:692) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.query(hqlsqlbasewalker.java:665) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.collectionfunctionorsubselect(hqlsqlbasewalker.java:4905) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.inrhs(hqlsqlbasewalker.java:4806) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.comparisonexpr(hqlsqlbasewalker.java:4473) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.logicalexpr(hqlsqlbasewalker.java:2104) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.logicalexpr(hqlsqlbasewalker.java:2029) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.whereclause(hqlsqlbasewalker.java:796) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.query(hqlsqlbasewalker.java:597) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.selectstatement(hqlsqlbasewalker.java:301) @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.statement(hqlsqlbasewalker.java:249) @ org.hibernate.hql.internal.ast.querytranslatorimpl.analyze(querytranslatorimpl.java:278) @ org.hibernate.hql.internal.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:206) @ org.hibernate.hql.internal.ast.querytranslatorimpl.compile(querytranslatorimpl.java:158) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:126) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:88) @ org.hibernate.engine.query.spi.queryplancache.gethqlqueryplan(queryplancache.java:167) @ org.hibernate.internal.abstractsessionimpl.gethqlqueryplan(abstractsessionimpl.java:301) @ org.hibernate.internal.abstractsessionimpl.createquery(abstractsessionimpl.java:236) @ org.hibernate.internal.sessionimpl.createquery(sessionimpl.java:1800) @ org.hibernate.jpa.spi.abstractentitymanagerimpl.createquery(abstractentitymanagerimpl.java:328) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ org.springframework.orm.jpa.extendedentitymanagercreator$extendedentitymanagerinvocationhandler.invoke(extendedentitymanagercreator.java:342) @ com.sun.proxy.$proxy35.createquery(unknown source) @ org.springframework.data.jpa.repository.query.simplejpaquery.validatequery(simplejpaquery.java:78) ... 53 more
i'm not sure what's wrong jpql
thanks commenters, pointed me in right direction. didn't need join @ in end
@query("select cp channelprogramme cp" + " cp.programme.programmeid in (select programmeid progepperfassociation" + " performerid = :performerid)" + " , (cp.starttime between :fromdate , :todate)" + " order cp.starttime, cp.starttime")
Comments
Post a Comment