これは私を困惑させました。
私は java.sql.ResultSet を持っており、次のように文字列値を引き出しています。
address.setAddressLine1(rs.getString("AddressLine1"));
address.setAddressLine2(rs.getString("AddressLine2"));
rs.getString("AddressLine1") をデバッグして検査すると、デバッガーは 30 文字の文字列を取得したと表示します: "ATTN: ACCOUNTS PAYABLE" (末尾のスペースは削除されています)。ただし、この行の直後にアドレス オブジェクトを調べると、addressLine1 が 30 文字のスペースまたはその他の空白の文字列であることが報告されています。
rs.getString("AddressLine2") をデバッグして検査すると、デバッガーは 23 文字の文字列を取得したと表示します: "10 Something Street" (末尾のスペースは削除されています)。この行の直後に住所オブジェクトを調べると、 addressLine2 is nullと報告されています。
私を本当に悩ませているのは、これがすべての値で発生しているわけではなく、ほんの一部であるということです。
私のアドレス クラスは、完全にばかげたゲッターとセッターを含むプレーンな古い文字列を格納しています。本当に、約束します!これは、他のダム プロパティを削除してカット アンド ペーストしたものです。
public class Address implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private String addressLine1;
private String addressLine2;
public String getAddressLine1() {
return addressLine1;
}
public void setAddressLine1(String addressLine1) {
this.addressLine1 = addressLine1;
}
public String getAddressLine2() {
return addressLine2;
}
public void setAddressLine2(String addressLine2) {
this.addressLine2 = addressLine2;
}
}
ここで一体何が起こっているのですか?それはある種の奇妙なスコープの問題ですか?それはある種の文字エンコーディングですか?
PS - 私は春の SimpleJdbcTemplate を使用しています。私が話している「疑似データベース」は、ODBC (sun.jdbc.odbc.JdbcOdbcDriver) 経由でアクセスしている ProvideX です。