Это меня поставило в тупик.
У меня есть набор 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 равен 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;
}
}
Что, черт возьми, здесь происходит? Это какая-то странная проблема с ограничениями? Это что-то вроде кодировки символов?
P.S. - Я использую SimpleJdbcTemplate Spring, и «псевдо-база данных», с которой я говорю, - это ProvideX, к которому я обращаюсь через ODBC (sun.jdbc.odbc.JdbcOdbcDriver).