RowSetMetaDataImpl une info
Bonjour,
J'utilise JoinRowSetImpl() afin d'effectuer une jointure sur les enregistrements de 2 ResultSet
Lorsque l'on écrit le prédicat de jointure en 1ere position dans la deuxième clause sql, l'accès au metadata retourne null pour la 2 eme champ de la requete.
ex
Code:
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
|
//base1
JoinRowSet jrs = new JoinRowSetImpl();
rs = stmt.executeQuery("select idContrat, cClient from Clients")...
CachedRowSet versement = new CachedRowSetImpl();
versement.populate(rs);
versement.setMatchColumn(1);
jrs.addRowSet(versement);
//base2
rs2 = stmt.executeQuery("select idContrat, prixContrat, hContrat from Contrats")..
CachedRowSet ct = new CachedRowSetImpl();
ct .populate(rs2);
ct .setMatchColumn(1); // Le critère de jointure
jrs.addRowSet(ct);
RowSetMetaDataImpl rsm = (RowSetMetaDataImpl) jrs.getMetaData();
for (int i=1; i<=rsm.getColumnCount(); i++){
System.out.println(rsm.getColumnName(i) + "---" + rsm.getColumnLabel(i));
//console
idContrat --- Contrat
cClient --- Code Client
prixContrat --- Null
hContrat --- Prix Contrat (parfois un décalage...) |
Pour contourner cette situation j'ai écris le prédicat de jointure en derniere position dans la 2 ème requete
Code:
1 2 3
|
rs2 = stmt.executeQuery("select prixContrat, hContrat, idContrat from Contrats")..
ct .setMatchColumn(3); // Le critère de jointure |
Avez-vous déjà rencontré ce probleme ?