我有两个实体,它们有多对多关系,我无法加载Set <Category> categories
。这些字段填入数据库。
@Entity
@Table(name="Product")
public class Product {
@Id
@GeneratedValue
private int idProduct;
private String status;
private String name;
@ManyToMany(fetch = FetchType.EAGER, mappedBy= "products")
private Set <Category> categories;
}
@Entity
@Table(name="Category")
public class Category {
@Id
@GeneratedValue
private int idCategory;
private String name;
@ManyToMany(fetch = FetchType.EAGER)
private Set <Product> products;
}
这不会在视图中返回任何内容,并且循环也不会旋转一次。
<c:forEach items="${product.categories}" var="items">
<p>${items.name}</p>
</c:forEach>
我加入架构。有人可以写下要做些什么来让它起作用吗? enter image description here
这不起作用。
@Entity
@Table(name="Category")
public class Category {
@Id
@GeneratedValue
private int idCategory;
private String name;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "Product_Category", joinColumns = {
@JoinColumn(name = "Category_idCategory", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "Product_idProduct",
nullable = false, updatable = false) })
private Set <Product> product;
答案 0 :(得分:0)
Hibernate从对象的注释中推断出需要创建的sql。您的产品实体告诉hibernate从Category实体获取有关SQL连接的信息。这来自mappedBy
注释中的@ManyToMany
子句。
当它进入类别实体时,它找不到它需要的东西,它只是给出一个空集。
大多数@ManyToMany
注释都是使用连接表完成的。这是一个连接表注释示例
@JoinTable(name = "product_to_category", joinColumns = {
@JoinColumn(name = "category_id", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "product_id",
nullable = false, updatable = false) })
根据您的架构,您可能需要调整上面的注释才能使其正常工作。它会给你一个良好的开端。