2016-09-29 7 views
0

2つのテーブルを結合してjava内のすべての列を読み込みたい。 javaでは、結果セットにはすべてのフィールドが含まれていますが、両方のテーブルで同じ名前が使用されています。 約65列で、選択後に各列を指定したくありません。SQL postgres - フィールドが多すぎるために結合後に各列の名前を変更する方法

SQLクエリ:私はしたいJavaで

select * from Tab a join Tab b on a.id = b.id; 

private MyObject map(ResultSet rs) throws SQLException { 
    myObj.setNameA(rs.getString("a_name")); 
    myObj.setNameB(rs.getString("b_name")); 
} 

私の考えは 'a_name' と 'b_name' のようなテーブルの変数を使用して、各列の名前を変更することでしたし、その後にjavaのフィールドを読んでください。

選択後に各列を指定しなくても、テーブルの各フィールドの名前を変更できますか? ( 'a_nameをa_name、b.nameをb_name、...と選択する'のように)

Javaのすべての列を取得するには、より良いソリューションですか?

+0

はい、あなたはSQLで単純なクエリを書く必要があります。 – Iqbal

答えて

1

列名の代わりに列番号を使用できます。ゲッターメソッドは、列名と同じ名前を持つ 複数の列と呼ばれる場合のJavadocは、明示的(http://docs.oracle.com/javase/8/docs/api/java/sql/ResultSet.html

述べ、最初に一致したカラムの値が が返されます。列名オプションは、列 が結果セットを生成したSQLクエリで使用されている場合に使用するように設計されています。 クエリで明示的に指定されていない 列の場合は、 の列番号を使用することをお勧めします。列名を使用する場合、プログラマは を使用して、SQL AS節で保証される という意図された列を一意に参照するように注意する必要があります。

もちろん、列番号を使用すると、列の正確な位置(1から始まる)を知る必要があります。

private MyObject map(ResultSet rs) throws SQLException { 
    myObj.setNameA(rs.getString(1)); 
    myObj.setNameB(rs.getString(66)); 
} 
関連する問題