List と Map を試してみましたが、Hibernate 3.6.4 に強制的にこれらのコレクションに null 値を保持させる方法がわかりません。これは私が試したことです:
@ElementCollection(fetch=FetchType.EAGER)
@Column(columnDefinition="longtext")
private Map<Integer, String> parameterValues;
と
@ElementCollection(fetch=FetchType.EAGER)
@OrderColumn
@Lob @Column(length=65535)
private List<String> parameterValues;
Map または List に null 値が含まれている場合、Hibernate はそれをコレクション テーブルの行に保持しません。コレクションがデータベースから取得されると、null の要素は復元されないため、格納されたときよりも要素が少なくなります。List は、null 以外の値を持つ最初と最後のインデックスの間のインデックスの null 値を復元しましたが、リストの最後の null 値は除外されました。マップには、null 以外の値のエントリのみが含まれていました。
これが理にかなっていることを願っています。Hibernate のバグのように思えますが、別の構成で修正できることを願っています。