Bonjour,
Je suis en train de tester JPA pour exécuter une requête sur une base Oracle (10g) et je suis confronté à un problème.
Voici la requête que je veux exécuter :Sur SQL Developper, cette requête est bien exécutée mais avec JPA, j'ai une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT COUNT(id), CASE texte WHEN 'test' THEN 'test' ELSE texte END FROM TEST_ORACLE GROUP BY CASE texte WHEN 'test' THEN 'test' ELSE texte ENDVoici le code qui tente de faire la requête.979 (not a GROUP BY expression ).Ainsi que mon entité :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CriteriaBuilder cb = getEntityManager().getCriteriaBuilder(); CriteriaQuery<Tuple> c = cb.createTupleQuery(); Root<testEntity> from = c.from(testEntity.class); Expression caseExpression = cb.selectCase(from.get("texte")) .when("test","test") .otherwise(from.get("texte")); c.multiselect(cb.count(from).alias("COUNT"), caseExpression) .groupBy(caseExpression); TypedQuery<Tuple> tq = getEntityManager().createQuery(c); return tq.getResultList();Je précise que lorsque je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 @Entity @Table(name="TEST_ORACLE") public class testEntity implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String texte; public String getTexte() { return texte; } public void setTexte(String texte) { this.texte = texte; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } }La requête est bien exécutée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part c.multiselect(cb.count(from).alias("COUNT")).groupBy(caseExpression);
Quelqu'un saurait-il m'expliquer d'où vient le problème ?
Merci d'avance pour votre aide.
Partager