【问题标题】:Can i use @JoinColumn on @OneToMany?我可以在@OneToMany 上使用@JoinColumn 吗?
【发布时间】:2020-10-12 01:09:34
【问题描述】:

我有一个有很多“类别”的“分支”:

    @JsonProperty
    @OneToMany(
            cascade = CascadeType.ALL
        )
    @JoinColumn(name="categorie_id")
    @LazyCollection(LazyCollectionOption.FALSE)
    private Collection<Categorie> categorie=new ArrayList<>();
    @JsonProperty
    @ManyToOne
    @JoinColumn(name="branche_id")
    private Branche branche;

我想列出与分支相关的类别!这很好用,但我认为它写得不好。 我不想在 @OneToMany 上使用 mapped By,当我使用它时,我的类别列表不再包含关联的“分支”。

【问题讨论】:

  • 我可以在@OneToMany 上使用@JoinColumn 吗? 是的,你可以
  • 我在任何地方都看不到mapped by - 可能是错误
  • 使用这些外键? @Antoniossss
  • 而不是 - 你应该在 1 到 X 关系中只有 1 个外键(或者你的模型是一团糟)你确定它不应该是多对多吗?
  • 是的,它是一对多 @Antoniossss

标签: spring-boot jpa spring-data-jpa one-to-many many-to-one


【解决方案1】:

我会尝试这样做

@JsonProperty
@OneToMany(
        cascade = CascadeType.ALL,
        mappedBy = "branche"
    )
private Collection<Categorie> categorie=new ArrayList<>();

  @JsonProperty
    @ManyToOne
    @JoinColumn(name="categorie_id")
    private Branche branche;

假设您有一个模型,其中每个分支只能有 1 个共享类别(并且分支应在 category_id 列中包含类别 ID)

【讨论】:

  • 但是我想在显示类别列表时显示分支!
  • 我试过了,我在 ManyToOne 上添加了 JsonBackReference,在 OneToMany 上添加了 JsonManagedReference,但它仍然显示分支上的类别!
  • 类别s?那里应该只有 1 个类别。
  • 是的,每个分支都有很多类别,当我尝试这个时,我会调用分支,它会显示分支及其类别,我想要的是当我调用类别时,显示它们与每个类别相关联的分支。当我用 JsonManagedReference 反转 JsonBackReference 时,它​​可以工作,但我认为它们不应该反转,JsonBackReference 应该在 @ManyToOne 上,而 JsonManagedReference 在 OneToMany 上。
  • 如果分支有多个类别,并且这些类别可以附加到多个分支,而不是它的多对多。
猜你喜欢
  • 1970-01-01
  • 2017-05-29
  • 2013-10-24
  • 2012-04-14
  • 2020-01-11
  • 2014-12-01
  • 2011-06-17
  • 2011-02-08
  • 2019-08-07
相关资源
最近更新 更多