Код: Выделить всё
@Entity
@Table(name = "category")
@Data
@EqualsAndHashCode(of = "id")
@ToString(of = "id")
public class Category {
@Id
@Column(name = "id", updatable = false, nullable = false)
@GeneratedValue(generator = Generator.UUID2_GENERATOR_NAME)
private UUID id;
@Column(name = "main_category_id")
private UUID mainCategoryId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "main_category_id", insertable = false, updatable = false)
private Category mainCategory;
@OneToMany(mappedBy = "mainCategory", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List subCategories;
@Column(name = "user_id")
private UUID userId;
@Column(name = "name")
private String name;
}
Код для сохранения выглядит следующим образом:
Код: Выделить всё
@Transactional
public List get(UUID userId) {
List categoriesToSave = new ArrayList();
for (YoungWithPetCategories cat : YoungWithPetCategories.values()) {
Category category = new Category();
category.setName(cat.name());
category.setUserId(userId);
List subCategories = new ArrayList();
for (String subCat : cat.getSubCategories()) {
Category subCategory = new Category();
subCategory.setName(subCat);
subCategory.setMainCategory(category);
subCategory.setUserId(userId);
subCategories.add(subCategory);
}
transactionCategory.setSubCategories(subCategories);
categoriesToSave.add(transactionCategory);
}
categoryRepository.saveAll(categoriesToSave);
}
Можно ли вообще сохранить такую ссылку на себя сущности одним выстрелом или мне следует сохранить их отдельно?
Подробнее здесь: https://stackoverflow.com/questions/774 ... -parent-id
Мобильная версия