Expect to get a warning about the (invalid) HQL syntax. Actually behaviour makes eclipse unresponsive.
An Infinite loop in JPA AbstractExpression parse method when using hibernate syntax FromClause.
wordParser contains the text: OUTER JOIN gr.client clnt WITH clnt.clientId = :clientId WHERE ro.ownerId = :ownerId
Uses the hibernate WITH clause.
Eclipse becomes unresponsive and has high CPU usage.
breaking the running instance and checking paused threads get a loop around the following stack trace:
Thread [Worker-3] (Suspended)
FromClause(AbstractExpression).parse(WordParser, String, boolean) line: 748
FromClause(AbstractFromClause).parse(WordParser, boolean) line: 191
SelectStatement(AbstractSelectStatement).parse(WordParser, boolean) line: 348
SelectStatement.parse(WordParser, boolean) line: 238
SelectStatementFactory.buildExpression(AbstractExpression, WordParser, String, JPQLQueryBNF, AbstractExpression, boolean) line: 55
JPQLExpression(AbstractExpression).parse(WordParser, String, ExpressionFactory, JPQLQueryBNF, AbstractExpression, boolean) line: 983
JPQLExpression(AbstractExpression).parseSingleExpression(WordParser, String, boolean) line: 1004
JPQLExpression.parse(WordParser, boolean) line: 307
JPQLExpression.<init>(CharSequence, JPQLGrammar, String, boolean) line: 129
JPQLExpression.<init>(CharSequence, JPQLGrammar, boolean) line: 91
DefaultJPQLQueryContext(JPQLQueryContext).initializeRoot() line: 700
DefaultJPQLQueryContext(JPQLQueryContext).setQuery(IQuery) line: 808
GenericJpaJpqlQueryHelper(AbstractJPQLQueryHelper).setQuery(IQuery) line: 435
GenericJpaJpqlQueryHelper(JpaJpqlQueryHelper).setQuery(NamedQuery, String) line: 223
GenericJpaJpqlQueryHelper(JpaJpqlQueryHelper).validate(NamedQuery, String, TextRange, int, List<IMessage>) line: 270
GenericJavaNamedQuery2_0.validateQuery_(JpaJpqlQueryHelper, List<IMessage>, IReporter) line: 112
GenericJavaNamedQuery2_0(AbstractJavaQuery<A>).validateQuery(JpaJpqlQueryHelper, List<IMessage>, IReporter, CompilationUnit) line: 226
GenericJavaNamedQuery2_0(AbstractJavaQuery<A>).validate(JpaJpqlQueryHelper, List<IMessage>, IReporter, CompilationUnit) line: 197
GenericPersistenceUnit(AbstractPersistenceUnit).validate(Query, JpaJpqlQueryHelper, List<IMessage>, IReporter) line: 2615
GenericPersistenceUnit(AbstractPersistenceUnit).validateQueries(List<IMessage>, IReporter) line: 2559
GenericPersistenceUnit(AbstractPersistenceUnit).validate(List<IMessage>, IReporter) line: 2249
GenericPersistence.validatePersistenceUnit(List<IMessage>, IReporter) line: 320
GenericPersistence.validate(List<IMessage>, IReporter) line: 272
GenericPersistenceXml.validate(List<IMessage>, IReporter) line: 281
GenericRootContextNode.validate(List<IMessage>, IReporter) line: 244
GenericJpaProject(AbstractJpaProject).validate(List<IMessage>, IReporter) line: 1491
GenericJpaProject(AbstractJpaProject).getValidationMessages(IReporter) line: 1481
InternalJpaProjectManager.buildValidationMessages_(IProject, IReporter) line: 553
InternalJpaProjectManager$BuildValidationMessagesCommand.execute() line: 542
CommandJobCommandAdapter.execute(IProgressMonitor) line: 39
JobCommandJob.run(IProgressMonitor) line: 42
Worker.run() line: 54
Class being parsed looks like:
@Entity
@Table(name="ResourceOwner")
@NamedQueries(
)
public class ResourceOwner implements Serializable {
...