How can I limit in a select query of JPQL named query? I need the limit to be done in the query level itself and not in the java layer!!! I am trying to use
@NamedQueries(value = { @NamedQuery(name = UserNotification.QueryName.NOTIFICATION_DISPLAYED, query = "SELECT un FROM UserNotification un " + "WHERE un.orgId IN (:orgList) " + "AND un.user.id = :userId LIMIT 5")
but in vain!!!
Please suggest
Limiting query results in JPA is slightly different to SQL; we don't include the limit keyword directly into our JPQL. Instead, we just make a single method call to Query#maxResults, or include the keyword first or top in our Spring Data JPA method name. As always, the code is available over on GitHub.
JPQL syntax is very similar to the syntax of SQL. Having SQL like syntax is an advantage because SQL is a simple structured query language and many developers are using it in applications. SQL works directly against relational database tables, records and fields, whereas JPQL works with Java classes and instances.
JPQL doesn't support the LIMIT keyword.
JPQL
does not provide a mechanism to limit queries. This is most often achieved by using the setMaxResults()
method on the Query
. If you must avoid specifying this in Java code, you could make a view in the database that contains your query and performs the limit. Then map an entity to this view as you would a table.
Example:
List<String> resultList= query.setMaxResults(100).getResultList();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With