質問を正しく理解していて、各 CategoryEntity に他の CategoryEntity のリストが含まれていることが必要な場合は、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 フィールドに追加する必要があります。