Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring Data JPA entityName variable triggers HQL Query Syntax validation error #1448

Closed
eidottermihi opened this issue Jan 14, 2025 · 1 comment

Comments

@eidottermihi
Copy link

Describe the bug

Using the #{#entityName} Spring Data JPA Query Expression Variable in a Spring Data @Query leads to two "Data Queries - HQL Query Syntax" validation errors in Eclipse / STS:

HQL: extraneous input '#{#entityName}' expecting {'(', ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BOTH, BREADTH, BY, CASE, CAST, COLLATE, COUNT, CROSS, CUBE, CURRENT, CURRENT_DATE, CURRENT_INSTANT, CURRENT_TIME, CURRENT_TIMESTAMP, CYCLE, DATE, DATETIME, DAY, DEFAULT, DELETE, DEPTH, DESC, DISTINCT, ELEMENT, ELEMENTS, ELSE, EMPTY, END, ENTRY, EPOCH, ERROR, ESCAPE, EVERY, EXCEPT, EXCLUDE, EXISTS, EXTRACT, FETCH, FILTER, FIRST, FLOOR, FOLLOWING, FOR, FORMAT, FROM, FULL, FUNCTION, GROUP, GROUPS, HAVING, HOUR, ID, IGNORE, ILIKE, IN, INDEX, INDICES, INNER, INSERT, INSTANT, INTERSECT, INTO, IS, JOIN, KEY, LAST, LATERAL, LEADING, LEFT, LIKE, LIMIT, LIST, LISTAGG, LOCAL, LOCAL_DATE, LOCAL_DATETIME, LOCAL_TIME, MAP, MATERIALIZED, MAX, MAXELEMENT, MAXINDEX, MEMBER, MICROSECOND, MILLISECOND, MIN, MINELEMENT, MININDEX, MINUTE, MONTH, NANOSECOND, NATURALID, NEW, NEXT, NO, NOT, NULLS, OBJECT, OF, OFFSET, OFFSET_DATETIME, ON, ONLY, OR, ORDER, OTHERS, OUTER, OVER, OVERFLOW, OVERLAY, PAD, PARTITION, PERCENT, PLACING, POSITION, POWER, PRECEDING, QUARTER, RANGE, RESPECT, RIGHT, ROLLUP, ROW, ROWS, SEARCH, SECOND, SELECT, SET, SIZE, SOME, SUBSTRING, SUM, THEN, TIES, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TREAT, TRIM, TRUNC, TRUNCATE, TYPE, UNBOUNDED, UNION, UPDATE, USING, VALUE, VALUES, VERSION, VERSIONED, WEEK, WHEN, WHERE, WITH, WITHIN, WITHOUT, YEAR, IDENTIFICATION_VARIABLE} [HQL_SYNTAX]

and

HQL: mismatched input '#{#entityName}' expecting {',', ')', EXCEPT, FROM, GROUP, INTERSECT, ORDER, UNION, WHERE} [HQL_SYNTAX]

To Reproduce

Example @Query query that triggered those errors:

public interface MyInterfaceRepository extends JpaRepository<MyEntity, Long> {

  @Query("from #{#entityName} e where g.order= (select min(sub.order) from #{#entityName} sub)")
  Optional<MyEntity> searchWithMinOrder();

}

Version Spring Tools:

  • Spring Boot Language Server Feature: 4.27.0.202411281450
  • Spring IDE Boot Microservices Dash: 4.27.0.202411281622
  • Spring Tool Suite 4: 4.27.0.202411281622
  • Spring Tool Suite 4 Main Feature: 4.27.0.202411281622

Sample

n/a

@BoykoAlex
Copy link
Contributor

Should be fixed with 02cd877. Not sure where lese SPEL can be used. There is case for SPEL in parameters which is supported and now for the entity names.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants