Из документации Java EE 5: « Используется для указания именованного запроса на языке запросов Java Persistence, который является статическим запросом, выраженным в метаданных. Имена запросов ограничиваются единицей сохранения ».
Как говорится, он статический, и вы не можете изменить запрос во время выполнения.Вместо этого используйте пользовательский запрос или, если упорядоченный элемент является фиксированным, вы можете использовать аннотацию;
Поле:
@OrderBy(value="nickname")
List<Person> friends;
Метод:
@OrderBy("nickname ASC")
public List<Person> getFriends() {...};