Скажем, у меня есть следующий класс с отображением Hibernate:
public class ClassA {
@OneToMany(fetch=EAGER)
private List<ClassB> bList;
}
Когда я считываю объект ClassA
из сеанса Hibernate, поле bList
инициализируется объектом PersistentList
, как и ожидалось.
У меня возникает требование, когда в ситуациях, когда список пуст, мне нужно, чтобы Hibernate инициализировал поле bList
значением null
, а не пустым PersistentList
. Теоретически, Hibernate имеет информацию, необходимую для этого, так как выборка в списке не терпится. Проблема в том, что согласно разделу 6.1 документа Hibernate :
Из-за базовой реляционной
модель, коллекционные свойства делают
не поддерживает семантику нулевого значения.
Hibernate не различает
нулевая ссылка на коллекцию и
пустая коллекция.
Это имеет смысл, но я надеюсь, что кто-то может придумать хитрую уловку, чтобы преодолеть это ограничение. Я думаю, что, возможно, какой-нибудь механизм прослушивания / обратного вызова мог бы позволить мне заменить пустые списки пустыми ссылками.