【问题标题】:Does JPA return "null" or empty collection for a collection property that is empty in the DB?对于数据库中为空的集合属性,JPA 是否返回“null”或空集合?
【发布时间】:2018-06-14 14:38:11
【问题描述】:

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

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

相应的数据库模式通常会包含一个单独的表来存储标签,其中每条记录都包含一个标签和一个对“Post”表的外键引用。

现在,当我从没有标签的数据库中加载“发布”实体(即不存在相应的“标签”记录)时,Post.tags 的值是多少?它会被设置为null,还是空的List?还是这是未定义的?

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


注意:这和Does Hibernate return null or empty collection if table in relation is empty? 一样的问题,只是针对 JPA 规范而不是专门针对 Hibernate。

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

【问题讨论】:

    标签: jpa collections null language-lawyer


    【解决方案1】:

    根据JPA 2.1 spec

    2.9 实体关系

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

    【讨论】:

    • 谢谢,正是我想要的。我只在 JPA 规范中搜索了“null”和“empty”,这就是我没有找到它的原因。
    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2017-09-19
    • 1970-01-01
    • 2011-05-21
    • 2010-09-25
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多