# Java > Gnral Java > Persistance des donnes >  Slectionner un seul champ d'une table

## DomIII

Bonjour,

Sans doute un problme tout simple, mais je n'y arrive pas. Je travaille sur une application Web qui gre des championnats d'un sport collectif. 

Les utilisateurs ont demand une petite volution : pouvoir slectionner une journe prcise  partir d'une liste droulante (balises _ <select>_ et _<option>_).

L'ide est donc de rcuprer les numros de journe en base. Je dispose de la table SQL suivante :


```

```

Pour rcuprer des rencontres sur une journe dsigne, voici ce que je fais sous Hibernate :


```

```

Ma question : en partant de ce code, existe un moyen simple de rcuprer la liste de toutes les valeurs JOURNEE de la table RENCONTRE, sachant qu'il faut employer la contrainte DISTINCT ?

En SQL simple, cela donnerait :


```

```

Merci par avance de votre aide.

----------


## tchize_

avez vous essay



```
select distinct(rencontre.journee) from Rencontre rencontre
```

?

----------


## DomIII

> avez vous essay
> 
> 
> 
> ```
> select distinct(rencontre.journee) from Rencontre rencontre
> ```
> 
> ?


Hlas, a ne fonctionne pas... Une exception est leve :



```

```

----------


## sebastien.moratinos

Peux tu nous donner le mapping de cette table ?

Pourquoi ton ORM cherche la colonne :  OID0_



> GRAVE: Column 'OID0_' not found.

----------


## DomIII

> Peux tu nous donner le mapping de cette table ?
> 
> Pourquoi ton ORM cherche la colonne :  OID0_


Mais certainement  :;): 

Voici la table SQL (desc RENCONTRE) :


```

```

Et le mapping sous Hibernate, le fichier _Rencontre.hbm.xml_  :


```

```

----------


## sebastien.moratinos

Quand une requte toute simple ne fonctionne pas, j'limine toutes les erreurs de contextes.
C'est  dire que je lance ma requte dans un environnement ultra simplifi.
Main + ORM + BDD + 1 seule requte et c'est tout.
On aura une piste pour te dpanner.

Donc voici ce qu'il faudrait que tu fasse : 

1 / Tu crer une classe "TestRequete.java" (dans la couche logique de ton Appli, c'est plus simple mais pas trs beau)

2 / Tu crer un main classique.
Ton main charge ton EntityManager (SessionFactory si t'es sous hibernate).
Puis excute ta requte (le select distinct).
Ensuite tu ferme l'EntityManager.
Ca fait 10 lignes de code c'est tout.

En norme JPA 2 a donne : 


```

```

3 / Configure ta persistenceUnit (config Hibernate pour toi) que j'ai appel "unitMainTest"

----------


## DomIII

Excellente suggestion !  ::D: 

Je tche de le faire au plus vite.

Pour parler un peu plus de cette application, il s'agit d'une architecture 3 Tiers en Java 1.5, utilisant Struts 1.3.10 et Hibernate 3.0, la base de donnes est en MySQL 5.0. Le plus simple pour moi est d'adapter ton code rapide sur le plug-in (mthode excute au lancement du serveur Tomcat).

----------


## sebastien.moratinos

> Le plus simple pour moi est d'adapter ton code rapide sur le plug-in (mthode excute au lancement du serveur Tomcat).


Non, non !

Le but est justement de ne pas avoir un contexte gnant.
Donc pas de Tomcat pas de web, juste un Main classique.

Regarde la doc hibernate si tu ne sais comment faire : http://www.hibernate.org/docs

----------


## DomIII

Hlas, le problme persiste... (si j'ose dire !  ::mouarf:: )

J'ai donc cr un simple projet comme tu l'as conseill, j'ai donc cr une classe avec l'environnement minimum ncessaire. La requte SQL ne veut pas s'excuter...



```

```

Toujours la mme exception :


```

```

----------


## sebastien.moratinos

y'a pas toute la stackstrace ?
Peux tu nous donner toute la log d'erreur pour voir ce qui drange Mr Hibernate.

----------


## DomIII

Voil, voil, c'est la mme stack que l-haut :-)



```

```

----------


## sebastien.moratinos

Le "ren" n'est ratach  rien, utilise plutt ce simple select : 


```

```

*EDIT : Mets hibernate.show_sql=true qu'on voit exactement ce que c'est cette colonne*

----------


## DomIII

Tout  fait, lorsqu'on slectionne tous les champs, cela se passe bien.

Je viens de me taper la documentation, il semblerait qu'il n'est pas permis du mettre du vritable SQL, il est ncessaire d'apporter quelques modifications. Le code suivant fonctionne :


```

```

Cependant, si je restreins la slection, a plante derechef...  ::(: 


```

```

Toujours la mme exception :


```

```

----------


## DomIII

> *EDIT : Mets hibernate.show_sql=true qu'on voit exactement ce que c'est cette colonne*


Cette option est effectivement active, elle donne la ligne suivante lors de l'exception.


```

```

----------


## sebastien.moratinos

le nom des colonnes OID, a ne me plait pas...

Tu utilises quoi comme version de mysql ?

----------


## DomIII

J'utilise MySQL 5.0...

Je suis en train de lire la doc de Hibernate, j'ai trouv quelque chose...  ::roll::

----------


## DomIII

*Ca y eeeeeeeeest !!!*  ::mrgreen:: 

D'aprs la documentation, le code utilis avec addEntity sert pour les jointures... et ne pouvait me servir ici.

Alors, il suffit de prendre le code suivant, et a fonctionne :


```

```

Et le fichier log :


```

```

Certes, je n'ai pas encore tout compris, mais il semblerait que les mthodes surcharges addScalar() permettent de manipuler du SQL natif. Ds que j'aurai un peu de temps, je me pencherai sur la doc complte.

En tout cas merci de ton implication, c'est trs sympa de ta part.

----------


## sebastien.moratinos

finalement c'est toi as trouv  ::ccool:: 

garde le Main pour tester les requtes qui plantent, c'est super utile

----------


## DomIII

> finalement c'est toi as trouv 
> 
> garde le Main pour tester les requtes qui plantent, c'est super utile


Trs bonne ide, je n'aurais jamais pens  une chose aussi simple.  ::): 

Merci encore d'avoir cherch avec moi.

----------

