O JDBC simplesmente nomeará as colunas pelo que está especificado na consulta - ele não sabe sobre nomes de tabelas etc.
Você tem duas opções:
Opção 1: Nomeie as colunas de forma diferente na consulta, ou seja
SELECT
a.columnName as columnNameA,
b.columnName as columnNameB,
...
from table1 a, table2 b where (WHATEVER)
em seguida, em seu código java, consulte os aliases de coluna:
resultSet.getString("columnNameA");
resultSet.getString("columnNameB");
Opção 2: Consulte a coluna posição em sua chamada para a API JDBC:
resultSet.getString(1);
resultSet.getString(2);
Observe que a API JDBC usa baseada em um índices - ou seja, eles contam a partir de
1
(não de 0
como índices java), então use 1
para a primeira coluna, 2
para a segunda coluna, etc Eu recomendaria a opção 1, porque é mais seguro se referir a colunas nomeadas:Alguém pode alterar a ordem das colunas na consulta e isso quebraria silenciosamente seu código (você estaria acessando a coluna errada, mas não saberia) , mas se eles alterarem os nomes das colunas, você receberá pelo menos uma exceção "no such column" em tempo de execução.