hibernate @embeddedid中的同一个表@manytoone引用

snvhrwxg  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(95)

我正在创建一个名为Category的实体。类别是多级的,例如:我可以有一个类别的名称食品这是最高级别。然后我可以在此下有两个类别:蔬菜和肉类。这应该在一个表中表示,如下所示:
| 亲本| parent |
| --| ------------ |
| 零| null |
| 食品类| Food |
| 食品类| Food |
每个父项的名称必须是唯一的,例如我不能有另一个名称=蔬菜&父项=食物。我正在尝试使用@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:外键循环依赖关系涉及下表:类别,类别
有没有人有办法在hibernate中实现这一点?

izkcnapc

izkcnapc1#

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

相关问题