代码之家  ›  专栏  ›  技术社区  ›  sleske

对于数据库中为空的集合属性,jpa是否返回“null”或空集合?

  •  1
  • sleske  · 技术社区  · 7 年前

    如果我有一个包含集合字段的jpa实体,比如

    public class Post {    
      // [...]
      @OneToMany
      private List<String> tags;
    

    对应的数据库模式通常包含一个用于存储标记的单独表,其中每个记录包含一个标记和对“post”表的外键引用。

    现在,当我从数据库中加载一个没有标记的“post”实体(即不存在对应的“tag”记录)时, Post.tags 是吗?会被设置为 null ,或空的 List ?或者这是未定义的?

    我在jpa规范中找不到这个。


    注: 这是同样的问题 Does Hibernate return null or empty collection if table in relation is empty? ,仅用于JPA规范,而不是专门用于Hibernate。

    我知道大多数JPA实现(至少Hibernate和EclipseLink)都会返回一个空集合——我感兴趣的是是否在任何地方都指定了这个集合。

    1 回复  |  直到 6 年前
        1
  •  4
  •   crizzis    7 年前

    根据 JPA 2.1 spec :

    如果从数据库中获取的实体的多值关系没有关联实体, 持久性提供程序负责将空集合作为关系的值返回。