Skip to content

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

Closed
@eidottermihi

Description

@eidottermihi

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions