иметь многократную выборку - PullRequest
0 голосов
/ 18 ноября 2018

У меня проблема с аннотацией JPA. Я создал 3 таблицы: - категории - категории_продукция - товары Database ERD

Я создал 3 отдельных объекта для категорий, продуктов и сводной таблицы:

@Entity
@Table(name="categories")
@NamedQuery(name="Category.findAll", query="SELECT c FROM Category c")
public class Category implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;

    @Column(name="name")
    private String name;

    @ManyToOne(cascade={CascadeType.ALL})
    @JoinColumn(name="category_id")
    @JsonBackReference
    private Category parentCategory;

    @OneToMany(mappedBy="parentCategory", fetch = FetchType.EAGER)
    @JsonManagedReference
    private List<Category> childCategory;

    public Category() {
    }

    // Getters and setters
}

Моя сущность для продуктов:

@Entity
@Table(name="products")
@NamedQuery(name="Product.findAll", query="SELECT p FROM Product p")
public class Product implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private String name;
    @Lob
    private String description;
    private int instock;
    private BigDecimal unitprice;
    private int createdat;
    private int updatedat;

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "product_id")
    private List<Image> images;

    public Product() {}

    // getters and setters
}

И моя сводная таблица:

@Entity
@Table(name="categories_products")
@NamedQuery(name="CategoriesProduct.findAll", query="SELECT c FROM CategoriesProduct c")
public class CategoriesProduct implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;

    @Column(name="category_id")
    private int categoryId;

    @Column(name="product_id")
    private int productId;

    // Getters and setters
}

На самом деле мне нужно увидеть продукты категории и категории продуктов, и я застрял, потому что кажется, что мы не можем получить нетерпеливый дважды. Для категории у меня уже есть oneToMany для получения подкатегорий, а для продуктов - OneToMany для получения фотографий продуктов

...