gpt4 book ai didi

java - hibernate/JPA : ManyToMany and OneToMany relationship on same attribute

转载 作者:行者123 更新时间:2023-11-30 09:13:15 25 4
gpt4 key购买 nike

我在结合 ManyToMany 和 OneToMany 关系时遇到问题。

我有条目和类别。每个条目都有一个主要类别和 0..* 个子类别。

这是我的实现:

public class Entry extends AbstractEntity {
[...]

private Category mainCategory;

@ManyToMany(targetEntity = hello.Category.class)
private Set<Category> subCategories;

[...]
}

public class Category extends AbstractEntity {
[...]

@ManyToMany(targetEntity = hello.Entry.class, mappedBy = "subCategories")
private Set<Entry> entries;

[...]
}

ManyToMany 关系是有效的,但我不知道如何实现 OneToMany 关系。

最佳答案

您不能在单个属性上定义两个单独的映射。它应该包含的数据没有明确定义。它应该包含由 subCategories 字段或 mainCategory 或两者映射的条目吗?由于没有针对所有用例的单一合理答案,因此 JPA 不允许此类多个注释。

但是,您可以只添加一个对应于一对多关系的反向(非拥有)端的字段。

这样定义:

public class Category ...

@ManyToOne(mappedBy="mainCategory")
private Set<Entry> entriesHavingThisCategoryAsMain;

我想不出一个更好的反面名称,所以请使用您的上下文:)

编辑:您不需要为类型化集合定义 targetEntity 属性,除非您在不同的包中有多个 CategoryEntry 实体。

关于java - hibernate/JPA : ManyToMany and OneToMany relationship on same attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com