Meskipun loop while Anda mengulangi seluruh ResultSet
, fungsi hanya akan mengembalikan kolom terakhir dalam batasan FK karena pada setiap iterasi Anda menimpa nilai dari iterasi sebelumnya (fkTableData = rs.getString(i);
). Btw:`fkTableData seharusnya merupakan variabel lokal untuk metode, bukan variabel instan.
Fungsi Anda harus mengembalikan List<String>
bukan String
.
Selain itu:Anda memanggil getImportedKeys()
sekali untuk setiap kolom di ResultSet. Itu sangat tidak efisien. Jika Anda menggunakan Oracle, Anda akan segera menyadarinya karena pengambilan informasi FK sangat lambat di sana (Postgres jauh lebih cepat saat mengakses katalog sistem).
Sebagai getImportedKeys()
mengembalikan satu baris untuk setiap FK kolom anda juga perlu mengumpulkan semua baris yang termasuk dalam satu definisi batasan tunggal (yaitu untuk satu kombinasi tabel induk/anak).
Mungkin yang terbaik adalah mendefinisikan kelas PkDefinition
yang menyimpan semua kolom yang terlibat dan nama tabel yang terlibat dan membuat fungsi Anda mengembalikan List<PkDefinition>
untuk menghindari beberapa panggilan untuk baris kumpulan hasil yang sama.