我可以在@OneToMany 上使用@JoinColumn 吗?
Posted
技术标签:
【中文标题】我可以在@OneToMany 上使用@JoinColumn 吗?【英文标题】:Can i use @JoinColumn on @OneToMany? 【发布时间】: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,当我使用它时,我的类别列表不再包含关联的“分支”。
【问题讨论】:
是的,你可以 我在任何地方都看不到mapped by
- 可能是错误
使用这些外键? @Antoniossss
而不是 - 你应该在 1 到 X 关系中只有 1 个外键(或者你的模型是一团糟)你确定它不应该是多对多吗?
是的,它是一对多 @Antoniossss
【参考方案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 上。 如果分支有多个类别,并且这些类别可以附加到多个分支,而不是它的多对多。以上是关于我可以在@OneToMany 上使用@JoinColumn 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Hibernate Criteria 连接两个具有 OneToMany 关系的表
如何在 @OneToMany 关系映射的列上使用 JPA findBy 查询?
OneToMany 关系在 Prisma 数据库上工作,但不在服务器上