java - Hibernate 中的空集合与空集合

标签 java hibernate

假设我有以下 Hibernate 映射类:

public class ClassA {       
   @OneToMany(fetch=EAGER)
   private List<ClassB> bList;
}

当我从 Hibernate session 中读取 ClassA 的对象时,bList 字段按预期使用 PersistentList 对象进行初始化。

我发现自己有一个要求,在列表为空的情况下,我需要 Hibernate 将 bList 字段初始化为 null,而不是用一个空的 持久列表。理论上,Hibernate 拥有执行此操作所需的信息,因为列表上的获取是急切的。问题是根据 section 6.1 of the Hibernate docs :

Collection-valued properties do not support null value semantics because Hibernate does not distinguish between a null collection reference and an empty collection.

这很有道理,但我希望有人能想出一个巧妙的计谋来克服这个限制。我在想也许某些监听器/回调机制可以让我用空引用替换空列表。

最佳答案

您是否尝试检查 getbList() 方法?你可以这样做:

if(bList.isEmpty()) 
    return null;
return bList;

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

关于java - Hibernate 中的空集合与空集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454846/

相关文章:

java - 用Java实现矩阵结构

Java 自调度程序/服务?

java - Hibernate 不检索所需的记录

java - 将标准和订单添加到 HQL

java - 使用 webjars 进行 r.js 压缩

java - Eclipse 启动配置错误 : GrammaticalStructure. 1 引用不存在的项目开始

java - 来自数据库的 Tapestry 模板或在运行时修改

sql - 对于 Group By 查询,HQL 比 SQL 有什么优势

java - joda-time 和 Hibernate - 日期不存储在 UTC 中

java - 在 Spring 中将正则表达式查询与 hibernate 一起使用