如果我正确理解了这个问题并且您想要的是每个 CategoryEntity 包含其他 CategoryEntities 的列表,那么会想到 2 种可能的方法(尽管它们都没有使用 @OneToMany):
方法 1:
您可以创建 @ManyToMany 关系并在命名其键时定义 @JoinTable:
@Entity
public class CategoryEntity extends Model {
@Id
private String categoryId;
private String name;
private Integer level;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable( name = "category_category",
joinColumns = @JoinColumn(name = "source_category_id"),
inverseJoinColumns = @JoinColumn(name = "target_category_id"))
public List<CategoryEntity> category_entity_lists = new ArrayList<CategoryEntity>();
}
方法 2:
或者您可以为类别实体列表创建一个新实体并创建 @ManyToMany 关系,例如:
@Entity
public class CategoryList extends Model
{
@Id
public Long id;
@ManyToMany
@JoinTable(name="categorylist_category")
public List<CategoryEntity> category_list = new ArrayList<CategoryEntity>();
}
然后在你的模型中:
@Entity
public class CategoryEntity extends Model {
@Id
private String categoryId;
private String name;
private Integer level;
@OneToOne
public CategoryList this_category_list;
@ManyToMany(mappedBy="category_list")
public List<CategoryList> in_other_category_lists = new ArrayList<CategoryList>();
}
没有测试代码,但这应该做的是每个 CategoryEntity 可以是几个 CategoryLists 的一部分。每个 CategoryList 包含一个 CategoryEntities 列表。
您必须初始化 this_category_list 并将 CategoryEntities 添加到其 category_list 字段。