【问题标题】:How to persist uni-directional @ManyToMany entities如何保持单向@ManyToMany 实体
【发布时间】:2022-01-14 09:34:53
【问题描述】:

有两个实体,实体A有@ManyToMany注解并且知道实体B。

@Entity
class EntityA {
    @Id
    private Long id;

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(name = "entity_a_entity_b", joinColumns = @JoinColumn(name = "fk_entity_a"), inverseJoinColumns = @JoinColumn(name = "fk_entity_b"))
    private Set<EntityB> entitiesB = new HashSet<>();

    ...
}

@Entity
class EntityB {
    @Id
    private Long id;

    ...
}

我希望能够在实体 B 已经创建时保留它,或者在它尚未创建时创建一个新实体。 JSON文件的格式如下:

{
  "name": "This is new Entity A",
  "entitiesB": [
    {
      "name": "This is new Entity B"
    },
    {
      "id": 1,
      "name": "This entity B already exists"
    }
  ]
}

最后用一行entityARepository.save(entityA)调用save方法,这个操作的结果是分离实体传递给persist。您对如何正确操作有任何指导吗?这是一个 Spring Boot 应用程序,因此它通过 REST API 保存。

【问题讨论】:

  • 它相当简单。不是完全匹配,但你会从这里得到想法github.com/ajkr195/ThymeleafDynamicFields
  • @AjayKumar 你能在这里提供答案吗?
  • 如果我提供的示例有帮助,则无需回答和臃肿。顺便说一句,该示例对您有帮助吗?
  • @AjayKumar 它没有。没有@ManyToMany 关系,并且在上面提供的 JSON 结构的示例中,它并没有像我希望的那样执行。
  • 您的问题是关于持久化@OneToMany 实体。不是吗?

标签: java spring hibernate jpa orm


【解决方案1】:

我找到了解决方案。在保存 entityA 之前,通过它们的存储库检索实体 B 并将检索到的对象传递给集合就足够了。

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 2021-09-28
    • 2011-07-27
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多