Bonsoir,

j'ai un comportement bizzare, lorsque j'essaie de lire une entrée dans une des tables de ma DB.

j'ai ces 2 requêtes préparées (un insert et un select):
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@Override
    public void create(Object entity) {
        try {
            Connection con = ConnectDB.getInstance().getConnection();
            String query = "INSERT INTO catégories_articles (PK_id_categories_articles,nom_categories_articles)" + "values (?,?)";
            PreparedStatement preparedStmt;
            CategorieArticle cat = (CategorieArticle) entity;
            int id = cat.getIdCategorieArticle();
            String nom = cat.getNomCategorieArticle();
            System.out.println(nom);
            try {
                preparedStmt = con.prepareStatement(query);
                preparedStmt.setInt(1, id);
                preparedStmt.setString(2, nom);
                preparedStmt.executeUpdate();
                preparedStmt.close();
            } catch (SQLException ex) {
                Logger.getLogger(CategorieArticleDAO.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("error create statement: " + ex);
            }
        } catch (SQLException ex) {
            Logger.getLogger(CategorieArticleDAO.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("error create : " + ex);
        }
    }
 
    /**
     * Find, va lire une catégorie d'article via son id et un requête préparée
     * SELECT
     *
     * @param id
     * @return CategorieArticle
     */
    @Override
    public Object read(int id) {
        CategorieArticle cat = new CategorieArticle(id);     
        try (Connection con = ConnectDB.getInstance().getConnection()) {
            String query = "SELECT * FROM catégories_articles WHERE PK_id_categories_articles = ?";
            try (PreparedStatement preparedStmt = con.prepareStatement(query)) {
                preparedStmt.setInt(1, id);
                ResultSet res = preparedStmt.executeQuery();
                while (res.next()) {
                    cat.setIdCategorieArticle(res.getInt("PK_id_categories_articles"));
                    cat.setNomCategorieArticle(res.getString("nom_categories_articles"));
                }
                preparedStmt.close();
            }
        } catch (SQLException ex) {
            Logger.getLogger(CategorieArticleDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        System.out.println("print 1[" + cat.idCategorieArticle + "," + cat.nomCategorieArticle + "]");
 
        return cat;
    }
 
    @Override
    public void update(Object entity
    ) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
    @Override
    public void delete(Object entity
    ) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
L'insert après contrôle dans ma DB se fait correctement.

Lorque j'exécute ces tests unitaires:
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
@Test
    public void test1_insert_categorie() throws ErrDoublon {
        Controler contr = Controler.getInstance();
        contr.addCategorie("Description");
        System.out.println("TEST1 - Catégorie ajouté dans la DB.");
    }
 
    /**
     * test d'un select dans catégories d'articles sur base de l'id
     */
    @Test
    public void test2_readCategorieById() {       
        Controler contr = Controler.getInstance();
        CategorieArticle cat = contr.loadCategorieById(7);
        System.out.println("TEST2 - Catégorie lue dans la DB.");
        System.out.println("print 3[" + cat.idCategorieArticle + "," + cat.nomCategorieArticle + "]");
        assertEquals(cat.getIdCategorieArticle(), 7);
        System.out.println("ID OK");
        assertEquals(cat.getNomCategorieArticle(), "Description");
        System.out.println("TEST2 - l'objet lu est le bon");
    }
le premier test est bon et le deuxième ne reconnait pas le nom de l'article il est à null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
assertEquals(cat.getNomCategorieArticle(), "Description");
Par contre aprsè si je n'exécute que le deuxième test, celui-ci passe sans problème