slt la cpie, tjs moi

Comment fait on pr, via les expressions lambda, afficher ds 1 TableView le résultat d'1 requete SQL avec jointure?

J'ai 4 observableList ds ma class (F03_controller.java)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
	// contient le retour de test01_()
	ObservableList<ObservableList<String>> list_;
 
	// Les 3 suivantes servent ds la methode test01_()
	// contient les 2 ObservableList qui suivent
	ObservableList<ObservableList<String>> liste_testGeneral_ = FXCollections.observableArrayList();
 
	// contient le titre des livres empruntés
	ObservableList<String> liste_test01_ = FXCollections.observableArrayList();
 
	// contient le prenom des emprunteurs
	ObservableList<String> liste_test02_ = FXCollections.observableArrayList();
La méthode test01_() qui
- possède et execute la requete SQL
- remplit liste_test01_ avec le titre des livres empruntés
- remplit liste_test02_ avec le nom des emprunteurs
- remplit liste_testGeneral avec les 2 précédentes
- retourne la liste liste_testGeneral_
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
public ObservableList<ObservableList<String>> test01_() {
 
		System.out.println("fichier: F03_emprunt_controller.java");
		System.out.println("methode: test01_()");
 
		// les variables
 
		String selectQuerytest01_;
		Connection contest01_;
		PreparedStatement p_stmttest01_;
		ResultSet rstest01_;
 
		// redact° de la requete
		selectQuerytest01_ = "SELECT client.prenom, livre.titre\n"
				+ "FROM client, livre\n"
				+ "INNER JOIN emprunt\n"
				+ "WHERE client.id_abonne = emprunt.id_abonne\n"
				+ "AND emprunt.id_livre = livre.id_livre";
 
		// initialisat° de la variable de type Connection
		// obtenir la connex° grâce à la classe Connexion
		contest01_ = Connexion.getCon();
 
		try {
 
			// initialisat° d'1 variable de type
        	        // PreparedStatement
        	        // prépare la requete
                        p_stmttest01_ = contest01_.prepareStatement(selectQuerytest01_);
 
                       // initialisat° d'1 variable de type
                       // ResultSet
                       // execute la requete
                       rstest01_ = p_stmttest01_.executeQuery();
 
                      while (rstest01_.next()) {
 
            	            // Possible value [livre.titre, titre, client.prenom, prenom]
                           liste_test01_.add(rstest01_.getString("titre"));
                           liste_test02_.add(rstest01_.getString("prenom"));
 
                     }
 
		} catch(SQLException except) {
 
			//
			System.out.println("Except°:");
        	        System.out.println("Fichier: F03_emprunt_controller.java");
        	        System.out.println("Methode: test01_()");
                        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, except);
 
		}
 
		System.out.println("Found " + liste_test01_.size() + " livre.titre");
		System.out.println("Found " + liste_test02_.size() + " client.prenom");
 
 
		// imprime la ObservableList liste_test01_: les titres
		for(String empt : liste_test01_) {
     	             System.out.println("-: " + empt);
		}
 
		// remplit la ObservableList liste_testGeneral_
		// avec les 2 autres
		liste_testGeneral_.add(liste_test01_);
		liste_testGeneral_.add(liste_test02_);
 
		// imprime la ObservableList liste_testGeneral
		for(ObservableList<String> empt : liste_testGeneral_) {
     	               System.out.println("--: " + empt);
		}
 
		// permet d'acceder a la 1° ObservableArrayList
		System.out.println(liste_testGeneral_.get(0));
		// permet d'acceder a la 2° ObservableArrayList
		System.out.println(liste_testGeneral_.get(1));
		// permet d'acceder au 1° elt de la 1° ObservableArrayList
		System.out.println(liste_testGeneral_.get(0).get(0));
 
		return liste_testGeneral_;
	        // return liste_test01_;
 
	}
Enfin, ds la méthode initialize(URL p_url, ResourceBundle p_r_bdle)
j'essaye avec les lamba (que je ne connais pas) d'afficher ds la TableView
- TV02_col_titre, les titres des livres empruntés
- TV02_col_prenom, les prénoms des emprunteurs
J'ai bien differencie les etapes pr "etre sur de mon coup"

Je n'arrive pas a afficher les 2 informations en meme temps.
Je n'arrive qu'a afficher que les titres ou que le prenom des emprunteurs ds les colonnes de la TableView
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 
@Override
public void initialize(URL p_url, ResourceBundle p_r_bdle) {
 
 
	System.out.println("fichier: F03_emprunt_controller");
	System.out.println("methode: initialize()");	
 
	// la colonne prenom de la TV02
 
	// A quoi cela sert il?
	// TV02.getColumns().setAll(TV02_col_prenom, TV02_col_titre);
 
	//
	ObservableList<String> list__01 = FXCollections.observableArrayList();
 
	// ajout des prenoms
	list__01.addAll(list_.get(1));
 
	//
	System.out.println("Nbre d'elts ds list__01:");
	System.out.println(list__01.size());
 
	// contient les titres
	System.out.println("contenu de list__01");
	System.out.println(list__01);
 
 
	//
	TV02_col_prenom.setCellValueFactory(feature -> {
	    String value = feature.getValue();
	    return new SimpleStringProperty(value);
	});
 
 
	// la colonne titre de la TV02
 
	//
	ObservableList<String> list__02 = FXCollections.observableArrayList();
 
	// ajout des titres
	list__02.addAll(list_.get(0));
 
	//
	System.out.println("Nbre d'elts ds list__02:");
	System.out.println(list__02.size());
 
	// contient les titres
	System.out.println("contenu de list__02");
	System.out.println(list__02);
 
	//
	TV02_col_titre.setCellValueFactory(feature1 -> {
	    String value1 = feature1.getValue();
	    return new SimpleStringProperty(value1);
	});
 
	// erreur:
	// Can not retrieve property 'prenom' in PropertyValueFactory:
	// javafx.scene.control.cell.PropertyValueFactory@4a15866a with provided class type: class java.lang.String
        // TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<String, String>("prenom"));
 
	// erreur a la syntaxe:
	// Type mismatch: cannot convert from ObservableList<String> to ObservableValue<String>
	// TV02_col_prenom.setCellValueFactory(cellData -> (list__01));
 
	// erreur:
	// AVERTISSEMENT: Can not retrieve property 'client.prenom' in PropertyValueFactory:
	// javafx.scene.control.cell.PropertyValueFactory@4a15866a with provided class type: class java.lang.String
	// java.lang.IllegalStateException: Cannot read from unreadable property client.prenom
	// TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<String, String>("client.prenom"));
 
	// erreur:
	// AVERTISSEMENT: Can not retrieve property 'id_abonne' in PropertyValueFactory:
	// javafx.scene.control.cell.PropertyValueFactory@53779ac3 with provided class type: class java.lang.String
	// java.lang.IllegalStateException: Cannot read from unreadable property id_abonne
	// TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<String, String>("id_abonne"));
 
	// erreur
	// AVERTISSEMENT: Can not retrieve property 'titre' in PropertyValueFactory:
	// javafx.scene.control.cell.PropertyValueFactory@4a15866a with provided class type: class java.lang.String
	// java.lang.IllegalStateException: Cannot read from unreadable property titre
	// TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<String, String>("titre"));
 
	// erreur
	// AVERTISSEMENT: Can not retrieve property 'C1' in PropertyValueFactory:
	// javafx.scene.control.cell.PropertyValueFactory@4d9d6253 with provided class type: class java.lang.String
	// java.lang.IllegalStateException: Cannot read from unreadable property C1
	// TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<String, String>("C1"));
 
	// erreur
	// AVERTISSEMENT: Can not retrieve property 'C2' in PropertyValueFactory:
	// javafx.scene.control.cell.PropertyValueFactory@53779ac3 with provided class type: class java.lang.String
	// java.lang.IllegalStateException: Cannot read from unreadable property C2
	// TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<String, String>("C2"));
 
	// erreurs:
	// la methode n'est pas applicable pr les arguments
	// constructeur indefini
	// TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<String, ObservableList>(test01_().get(0)));
 
	// erreurs:
	// la methode n'est pas applicable pr les arguments
	// constructeur indefini
	// TV02_col_prenom.setCellValueFactory(new PropertyValueFactory<ObservableList, String>(test01_().get(0)));
 
	// erreur: type mismatch
	// TV02_col_prenom.setCellValueFactory(cellData -> (list__01));
 
	// erreur
	//  java.lang.ClassCastException:
	// class com.sun.javafx.collections.ObservableListWrapper cannot be cast to
	// class javafx.util.Callback (com.sun.javafx.collections.ObservableListWrapper
	// and javafx.util.Callback are in module javafx.base@18.0.1 of loader 'app')
	// TV02_col_prenom.setCellValueFactory((Callback<CellDataFeatures<String, String>, ObservableValue<String>>) list__01);
 
	// la 2° methode prend le pas sur la 1°
	TV02.setItems(list__01);
	TV02.setItems(list__02);
 
}
Dc soit
- y'a qque chose que je ne fais pas
- y'a qque chose que je fais mal,
- je n'utilise pas du tout la bonne méthode

Merci a vous,