Est-il possible d'utiliser JPQL pour obtenir des lignes aléatoires? Par exemple, dans SQL Server j'utiliser: select * from myTable où columnName = 4 commande par newid()Obtenir des lignes aléatoires à l'aide de JPQL
Merci, Rod
Est-il possible d'utiliser JPQL pour obtenir des lignes aléatoires? Par exemple, dans SQL Server j'utiliser: select * from myTable où columnName = 4 commande par newid()Obtenir des lignes aléatoires à l'aide de JPQL
Merci, Rod
A partir d'aujourd'hui (9e Avril 2010), JPQL ne supporte pas la commande aléatoire
C'est ce que j'utilise. Je reçois d'abord le nombre de lignes pour l'entité et ensuite je limite les résultats de la requête d'extraction à une ligne aléatoire. Cela implique deux requêtes, donc si cela vous pose un problème, vous pouvez vouloir regarder des requêtes natives. Sinon, voici le code que j'utilise:
public <T> T randomEntity(EntityManager em, Class<T> clazz) {
Query countQuery = em.createQuery("select count(id) from "+clazz.getName());
long count = (Long)countQuery.getSingleResult();
Random random = new Random();
int number = random.nextInt((int)count);
Query selectQuery = em.createQuery("from "+clazz.getName());
selectQuery.setFirstResult(number);
selectQuery.setMaxResults(1);
return (T)selectQuery.getSingleResult();
}
Pouvez-vous citer votre demande? –