У меня проблема с аннотацией JPA.
Я создал 3 таблицы:
- категории
- категории_продукция
- товары
Я создал 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 для получения фотографий продуктов