假设我有以下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不区分空集合引用和空集合.
这很有道理,但我希望有人可以拿出一个狡猾的诡计来克服这个限制.我想也许一些监听器/回调机制可能允许我用空引用替换空列表.
你试过检查getbList()方法吗?你可以这样做:
if(bList.isEmpty())
return null;
return bList;
Run Code Online (Sandbox Code Playgroud)
Hibernate将始终为您的引用创建一个对象,但您可以控制getter和setter中的数据.如果列表包含0个元素,则始终可以返回null.
| 归档时间: |
|
| 查看次数: |
11862 次 |
| 最近记录: |