Как создать классы модели JPA с весенней загрузкой в ​​приведенной ниже ситуации? - PullRequest
0 голосов
/ 12 июля 2020

У меня есть несколько каталогов, в этих каталогах есть несколько категорий, в некоторых каталогах вообще нет категорий, и, наконец, есть продукты в разных категориях или каталогах.

например каталог Домашнее хозяйство будет иметь категорию Кухня , в которой затем будут продукты, такие как духовка, плиты, посудомоечная машина и c, а простыни продуктов будут непосредственно принадлежат к домашним хозяйствам каталога, а не к какой-либо категории

таким же образом химические вещества в каталоге не будут иметь никакой категории и будут содержать только продукты .

нижеуказанные вещи являются определенными

i) Все товары относятся к некоторым каталогам

ii) в некоторых каталогах будут категории, а затем категории будут содержать товары

iii) некоторые продукты будут принадлежать только каталогам и никогда не будут ассоциироваться с какой-либо категорией

Я придумал структуру классов моделей ниже, но я не уверен, что Как они будут обрабатывать вышеуказанный случай, не могли бы вы предложить что-нибудь?

@Entity
public class Catalogs {

    @OneToMany(CascadeType.All, orphanRemoval = true)
    @JoinColumn(name = "catalogs_id")
    private Set<Categories> categories;

     /* rest of the code will go here */
}

мой класс категорий будет таким

@Entity
public class Categories {
    
  @OneToMany(CascadeType.All, orphanRemoval = true)
  @JoinColumn(name = "categories_id")
    private Set<Products> products;  
}

наконец мой класс продуктов будет go таким

@Entity
public class Products {

     /* Products related codes */
}

или Должен ли я также иметь поле для продуктов в моем классе каталога? как показано ниже

 @Entity
public class Catalogs {
    @OneToMany(CascadeType.All, orphanRemoval = true)
    @JoinColumn(name = "catalog_id")
    private Set<Categories> categories;

    @OneToMany(CascadeType.All, orphanRemoval = true)
    @JoinColumn(name = "catalog_id")
    private Set<Products> products;


     /* rest of the code will go here */
}

1 Ответ

0 голосов
/ 12 июля 2020

По вашему требованию у меня в голове возник подход. Если я начну с Каталог , я буду рассматривать этот класс как root. Затем я бы разработал этот класс как

@Entity
public class Catalogs {

// just catalog name or other activity. not mapping

}

После этого я бы разработал класс категорий, подобный этому, где каждая категория будет находиться в каталоге .

@Entity
public class Categories {

// other attribute...
    
  @ManyToOne
  @JoinColumn(name = "catalog_id")
    private Catalogs catalogs;  
}

После этого я бы разработал свой класс продукта следующим образом. Как вы сказали, один продукт может находиться в каталоге или, возможно, в категории. Итак, я сделал атрибут обнуляемым.

@Entity
public class Products {
    
    //other attributes....
    
    @ManyToOne
    @JoinColumn(name = "catalog_id")
    @Nullable
    private Catalogs catalogs;

    @ManyToOne
    @JoinColumn(name = "category_id")
    @Nullable
    private Categories categories;
}

Проверьте этот подход. И ответ на ваше мнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...