【问题标题】:JPA: do i have to fetch all OneToMany relation list in order to add new relationJPA:我是否必须获取所有 OneToMany 关系列表才能添加新关系
【发布时间】:2013-05-09 14:44:32
【问题描述】:

假设我有实体 A,A 有 B 的列表,标记为 OneToMany。我是否必须获取所有 B 项才能将新的 B 项添加到 A 的列表中?

示例:

@Entity
public class A {

   @Id
   Long id;

   @OneToMany
   List<B> bs;
} 

我必须获取所有 A.bs 才能将新项目添加到 bs 吗?

谢谢

阿隆

编辑 还有几个问题:

@German:有趣!几个问题

  1. 如果 A 和 B 之间的连接是通过表 C 连接的呢?我有同样的行为吗?

  2. 为什么列表会出现问题?

  3. 我可以用什么来代替列表?设置好了吗?

  4. 如果我坚持 A,我会覆盖 B 的所有链接吗?

  5. 如果链接是多对多(使用额外表格)怎么办

【问题讨论】:

    标签: jpa spring-data-jpa


    【解决方案1】:

    您必须将 b 添加到 A 的 bs 列表中。但是会发生什么是特定于提供者的。启用更改跟踪时,EclipseLink 等一些提供程序可以避免为延迟加载列表上的某些操作获取列表

    【讨论】:

      【解决方案2】:

      如果 B 有一个 @ManyToOne 注释指向 A 而你不会使用列表,你可能只需要设置 B 对 A 的引用并将其持久化,根本不需要接触 A 实例。在数据库中,数据将被插入到表 B 中,但在内存中,A 的列表将没有新元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-23
        • 2017-01-23
        • 1970-01-01
        • 2013-11-09
        • 1970-01-01
        • 1970-01-01
        • 2019-02-10
        • 1970-01-01
        相关资源
        最近更新 更多