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
- Valeurs
Mon entité :
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
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 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 @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; }
Si 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
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); }je ne récupère que la 2ème entrée <"A0000002"; "Engagée">
Code : Sélectionner tout - Visualiser dans une fenêtre à part findAvancementActionDtw("A0000002")
Si je demande explicitement la première entréeje ne récupère rien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part findAvancementActionDtw("A0000002", "Terminée")
Quelqu'un peut-il m'indiquer où est mon erreur ?
Cordialement.
Partager