Hibernate中的Null与空集合

ska*_*man 9 java hibernate

假设我有以下Hibernate映射类:

public class ClassA {       
   @OneToMany(fetch=EAGER)
   private List<ClassB> bList;
}
Run Code Online (Sandbox Code Playgroud)

当我ClassA从Hibernate会话中读取对象时,该bList字段使用PersistentList对象初始化,如预期的那样.

我发现自己有一个要求,在列表为空的情况下,我需要Hibernate初始化bList字段null,而不是空PersistentList.从理论上讲,Hibernate拥有它所需要的信息,因为列表中的提取非常渴望.问题是根据Hibernate文档的6.1节:

由于底层关系模型,集合值属性不支持空值语义.Hibernate不区分空集合引用和空集合.

这很有道理,但我希望有人可以拿出一个狡猾的诡计来克服这个限制.我想也许一些监听器/回调机制可能允许我用空引用替换空列表.

ami*_*efr 9

你试过检查getbList()方法吗?你可以这样做:

if(bList.isEmpty()) 
    return null;
return bList;
Run Code Online (Sandbox Code Playgroud)

Hibernate将始终为您的引用创建一个对象,但您可以控制getter和setter中的数据.如果列表包含0个元素,则始终可以返回null.