Bonjour.

J'ai un problème avec Hibernate.

J'ai une table sans colonne servant d'ID. J'ai donc utilisé un embedded id car il faut absoluement un ID avec hibernate.
J'ai choisi un couple de colonnes qui permet d'identifier de manière unique une ligne de la table.
Cependant quand je requête sur un seul de cet ID, la requête ne me renvoie pas toutes les valeurs...

Table :
  • Champs
    Nom : table_f_avancement_action_champs.PNG
Affichages : 175
Taille : 8,5 Ko
  • Valeurs
    Nom : table_f_avancement_action_valeurs.PNG
Affichages : 171
Taille : 7,3 Ko


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
17
18
19
20
21
@Entity
@Component
@Data
@Table(name = "F_AVANCEMENT_ACTION")
public class AvancementActionDtw {
 
  // --------------------------------------------------------
  // FIELDS
  // --------------------------------------------------------  
 
  @Id
  private AvancementActionDtwPk id;
 
  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "DATE_AVANCEMENT", nullable = false)
  private Date dateAvancement;
 
  @Column(name = "COUT", nullable = true)
  private Integer coutAction;
 
}
Mon embbeded Id :
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
@Data
@Embeddable
@EqualsAndHashCode(of = { "codeAction", "codeAvancement" })
public class AvancementActionDtwPk  implements Serializable {
 
  private static final long serialVersionUID = 1L;
 
  // --------------------------------------------------------
  // Fields
  // --------------------------------------------------------  
 
  @Column(name = "CODE_ACTION", nullable = false)
  private String codeAction;
 
  @Column(name = "CODE_AVANCEMENT", nullable = false)
  private String codeAvancement;
 
}
Mon DAO :
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
27
28
 
@Repository
@Component
public interface AvancementActionDtwDao extends JpaRepository<AvancementActionDtw, AvancementActionDtwPk> {
 
  /**
   * Recherche les {@link AvancementActionDtw} via leur code action et leur code avancement
   * 
   * @param codeAction le code de l'action à trouver
   * @param codeAvancement le code avancement à utiliser pour filtrer
   * 
   * @return les {@link AvancementActionDtw}
   */
  @Query("from AvancementActionDtw where id.codeAction = :codeAction and id.codeAvancement = :codeAvancement")
  List<AvancementActionDtw> findAvancementActionDtw(@Param("codeAction") String codeAction,
      @Param("codeAvancement") String codeAvancement);
 
  /**
   * Recherche les {@link AvancementActionDtw} via leur code action
   * 
   * @param codeAction le code de l'action à trouver
   * 
   * @return les {@link AvancementActionDtw}
   */
  @Query("from AvancementActionDtw where id.codeAction = :codeAction")
  List<AvancementActionDtw> findAvancementActionDtw(@Param("codeAction") String codeAction);
 
}
Si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
findAvancementActionDtw("A0000002")
je ne récupère que la 2ème entrée <"A0000002"; "Engagée">
Si je demande explicitement la première entrée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
findAvancementActionDtw("A0000002", "Terminée")
je ne récupère rien...

Quelqu'un peut-il m'indiquer où est mon erreur ?

Cordialement.