我正在创建一个名为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中实现这一点?
1条答案
按热度按时间izkcnapc1#
为了演示这种能力,我在我的github上发布了一个工作示例。我花了点时间。我希望这个例子对你有用。如果你有任何问题,请告诉我。