开发者

Adding OrderBy clause to a named query

开发者 https://www.devze.com 2023-01-25 17:34 出处:网络
Is it possible to add an OrderBy clause in to JPA Named que开发者_JAVA技巧ry at runtime?Named queries are processed by the persistence provider when the EntityManagerFactory is created. You can\'t cha

Is it possible to add an OrderBy clause in to JPA Named que开发者_JAVA技巧ry at runtime?


Named queries are processed by the persistence provider when the EntityManagerFactory is created. You can't change/modify/append anything about a named query dynamically at runtime.

If you are using JPA 2.0 and you need a way to do high-performance dynamic queries at runtime, you should look into the Criteria API.


From Java EE 5 Documentation : "Is used to specify a named query in the Java Persistence query language, which is a static query expressed in metadata. Query names are scoped to the persistence unit".

As it says, it is static & you can't change the query at runtime. Rather use custom query or if ordering element is fixed then you can use annotation;

Field:

@OrderBy(value="nickname")
List<Person> friends;

Method:

@OrderBy("nickname ASC")
public List<Person> getFriends() {...};


Even if you can't add order-by clause to your named query, you can provide a parametric orderBy. The following is a perfectly valid query:

SELECT u FROM User u ORDER BY :orderBy

And you are going to change ordering with something like:

query.setParameter("orderBy", "id");
0

精彩评论

暂无评论...
验证码 换一张
取 消