Доброго времени суток, разработчики, я с трудом справляюсь с этой проблемой в моем приложении, использующем среду SpringBoot. По сути, я не могу соединить два и два вопроса о том, как удалить один из элементов в отношении отношений после удаления его родителя. Вот мое объяснение: сначала обе сущности с соответствующим отношением друг к другу:
Product(Children)
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator = "native")
@GenericGenerator(name="native",strategy="native")
private Long id;
@OneToMany(mappedBy = "products",fetch= FetchType.EAGER,cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Category> categorySet= new HashSet<>();
CONSTRUCTOR FOR PRODUCTS ENTITY
-------------------------------------GETTERS AND SETTERS---------------------------------
Быть этим сущностью Продукта при условии, что один продукт может классифицироваться по нескольким категориям, следовательно, его отношение OnetoMany.Then:
Categories(Parent)
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator = "native")
@GenericGenerator(name="native",strategy="native")
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="product_id")
private Product products;
CONSTRUCTOR FOR CATEGORY ENTITY
---------------------------GETTERS AND SETTERS-----------------------------
В соответствии с прежней концепцией, но с обратной логикой c применил отношение категорий к продуктам и работает в моей базе данных. в репозиториях допустим, что я установил
Category Repository
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import java.util.Collection;
@RepositoryRestResource
public interface CategoryRepository extends JpaRepository <Category,Long> {
}
Product Repository
package com.miniAmazon;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.*;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource
public interface ProductRepository extends CrudRepository<Product,Long> {
Product findByProductName (String productName);
}
Затем попытался установить команду для удаления товаров или категорий из моих Jpa и Crud Reps, используя тест Junit для объекта категории, например:
Category Entity
@Test
public static void whenDeletingCategories_thenProductsShouldAlsoBeDeleted() {
ProductRepository.deleteAll();
assert(CategoryRepository.count()).isEqualTo(0);
assert(ProductRepository.count()).isEqualTo(0);
}
@Test
public static void whenDeletingProducts_thenCategoriesShouldAlsoBeDeleted() {
CategoryRepository.deleteAll();
assert(CategoryRepository.count()).isEqualTo(0);
assert(ProductRepository.count()).isEqualTo(2);
}
Выдает мне сообщение об ошибке, говоря, что «метод non-stati c deleteAll () / count ()» нельзя ссылать из контекста stati c ». Любая идея о том, почему это происходит. Любой совет? Спасибо заранее !!!!. Хорошего дня !!!