preparedstatementにハマッた!

create table A (
  id char(32)
);

こんなテーブルがあったとして、

insert into A (id) values('aaa');
insert into A (id) values('bbb');
insert into A (id) values('ccc');

という3件のレコードが存在するとき、

PreparedStatement pstmt = connection.prepareStatement("delete from A where id = ?");
pstmt.setString(1, "aaa");
int count = pstmt.executeUpdate();

System.out.println(count);

こんな感じでdelete文を発行しても0と表示されてしまい、消えない。。
ちなみにSQLの部分を

PreparedStatement pstmt = connection.prepareStatement("delete from A where id = 'aaa'");

こうすると消える。うーむ。。
と悩んでたんですが、結果はchar(32)が原因でした。

pstmt.setString(1, "aaa                              ");

こうすると消えました。うーん、ハマッた。普通はchar(32)のところに、その長さを満たしていないデータが入っている事は無いんだとは思うんですけどね。