hibernate @embeddedid 中的相同表@manytoone引用

hibernate Same table @manytoone reference in @embeddedid

提问人:user3859651 提问时间:7/13/2023 更新时间:8/4/2023 访问量:44

问:

我正在尝试创建一个名为 Category 的实体。类别是多级的,例如: 我可以有一个名称为食物的类别,这是顶级的。然后我可以再有 2 个类别:蔬菜和肉类。这应该表示的方式在单个表中,如下所示:

名字 父母
食物
蔬菜 食物
食物

每个父项的名称必须是唯一的,例如,我不能有另一个名称=蔬菜和父项=食物。 我正在尝试使用@EmbeddedId来做到这一点:

@Embeddable
@Data
@NoArgsConstructor
public class CategoryId implements Serializable {
  private String name;
  @ManyToOne
  @JoinColumn(name = "parent_name", referencedColumnName = "id")
  @JoinColumn(name = "parent_parent", referencedColumnName = "id")
  private Category parent;
}

.

@Table(name = "category")
@Entity
@Data
public class Category {
  @EmbeddedId
  private CategoryId id;
}

这给了我以下例外: org.hibernate.AnnotationException:涉及下表的外键循环依赖:category、category

有没有人有办法在休眠中实现这一目标?

多对一 休眠

评论


答:

0赞 Maksim Eliseev 7/25/2023 #1

为了展示这种能力,我在我的github上发布了一个工作示例。我花了一段时间。我希望这个例子对你有用。如果您有任何问题,请告诉我。