[hibernate-issues] [JIRA] (HHH-13943) Exception thrown by JOIN query when package names starts with "in"

Arul Siva Murugan V (JIRA) jira at hibernate.atlassian.net
Thu Apr 16 09:55:36 EDT 2020


Arul Siva Murugan V ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A91829093-5b50-4f5e-83e3-34328a0b9c64 ) *updated* an issue

Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiNzc3N2M1MmZlOWExNGQ4MzhmZjE0YzAxZDU5M2ZjNjYiLCJwIjoiaiJ9 ) / Bug ( https://hibernate.atlassian.net/browse/HHH-13943?atlOrigin=eyJpIjoiNzc3N2M1MmZlOWExNGQ4MzhmZjE0YzAxZDU5M2ZjNjYiLCJwIjoiaiJ9 ) HHH-13943 ( https://hibernate.atlassian.net/browse/HHH-13943?atlOrigin=eyJpIjoiNzc3N2M1MmZlOWExNGQ4MzhmZjE0YzAxZDU5M2ZjNjYiLCJwIjoiaiJ9 ) Exception thrown by JOIN query when package names starts with "in" ( https://hibernate.atlassian.net/browse/HHH-13943?atlOrigin=eyJpIjoiNzc3N2M1MmZlOWExNGQ4MzhmZjE0YzAxZDU5M2ZjNjYiLCJwIjoiaiJ9 )

Change By: Arul Siva Murugan V ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A91829093-5b50-4f5e-83e3-34328a0b9c64 )

[https://github.com/hibernate/hibernate-orm/pull/3338|https://github.com/hibernate/hibernate-orm/pull/3338]

Facing issue with JOIN Query if the following Entity is preset in a package starting within.
There are many popular domains like "in", "net.in", "co.in"  would have package starting  "in"
however IN also a keyword causes shift-reduce conflict. To avoid would escape it with a quote of the fully qualified class name of the entity.

Following stack trace

*Running query Without quote*

ERROR ErrorCounter - line 1:108: unexpected token: in
ERROR ErrorCounter - line 1:108: unexpected token: in
line 1:108: *unexpected token: in*
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromJoin(HqlBaseParser.java:1618)
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1337)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1045)
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:730)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:323)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:186)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:279)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1907)
at in.musicmaster.db.DAL.ClassScheduleDataDAL.getStudentNextClass(ClassScheduleDataDAL.java:278)
at in.musicmaster.db.MySqlInstance.getStudentNextClass(MySqlInstance.java:132)
at in.musicmaster.backend.APIServer.main(APIServer.java:120)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282)
at java.lang.Thread.run(Thread.java:748)
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: in near line 1, column 108 \[select t.firstName, t.lastName, e.numberOfClassesPending from in.musicmaster.db.Models.TutorData as t *join in.musicmaster.db.Models.EnrollmentData* as e on e.tutorId = t.tutorId where  t.tutorId = 1]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:91)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:288)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1907)
at in.musicmaster.db.DAL.ClassScheduleDataDAL.getStudentNextClass(ClassScheduleDataDAL.java:278)
at in.musicmaster.db.MySqlInstance.getStudentNextClass(MySqlInstance.java:132)
at in.musicmaster.backend.APIServer.main(APIServer.java:120)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282)
at java.lang.Thread.run(Thread.java:748)

*Running same query With quote*
ERROR ErrorCounter - line 1:108: unexpected token: 'in.musicmaster.db.Models.EnrollmentData'
ERROR ErrorCounter - line 1:108: unexpected token: 'in.musicmaster.db.Models.EnrollmentData'
line 1:108: *unexpected token: 'in.musicmaster.db.Models.EnrollmentData'*
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromJoin(HqlBaseParser.java:1618)
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1337)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1045)
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:730)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:323)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:186)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:279)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1907)
at in.musicmaster.db.DAL.ClassScheduleDataDAL.getStudentNextClass(ClassScheduleDataDAL.java:278)
at in.musicmaster.db.MySqlInstance.getStudentNextClass(MySqlInstance.java:132)
at in.musicmaster.backend.APIServer.main(APIServer.java:120)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282)
at java.lang.Thread.run(Thread.java:748)
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: 'in.musicmaster.db.Models.EnrollmentData' near line 1, column 108 \[*select t.firstName, t.lastName, e.numberOfClassesPending from in.musicmaster.db.Models.TutorData as t join *'in.musicmaster.db.Models.EnrollmentData' *as e on e.tutorId = t.tutorId where  t.tutorId = 1*]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:91)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:288)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1907)
at in.musicmaster.db.DAL.ClassScheduleDataDAL.getStudentNextClass(ClassScheduleDataDAL.java:278)
at in.musicmaster.db.MySqlInstance.getStudentNextClass(MySqlInstance.java:132)
at in.musicmaster.backend.APIServer.main(APIServer.java:120)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282)
at java.lang.Thread.run(Thread.java:748)
INFO  APIServer - Done ...

Where us if I rename the package with as *inm.musicmaster.db.Models* there is no error. but that is not the correct workaround.

( https://hibernate.atlassian.net/browse/HHH-13943#add-comment?atlOrigin=eyJpIjoiNzc3N2M1MmZlOWExNGQ4MzhmZjE0YzAxZDU5M2ZjNjYiLCJwIjoiaiJ9 ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-13943#add-comment?atlOrigin=eyJpIjoiNzc3N2M1MmZlOWExNGQ4MzhmZjE0YzAxZDU5M2ZjNjYiLCJwIjoiaiJ9 )

Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8 ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100124- sha1:fb83546 )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/hibernate-issues/attachments/20200416/125db61e/attachment.html 


More information about the hibernate-issues mailing list