Spring MVC - 从数据库加载数据

时间:2016-01-22 21:58:11

标签: spring

我有两个实体,它们有多对多关系,我无法加载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;

1 个答案:

答案 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) })

根据您的架构,您可能需要调整上面的注释才能使其正常工作。它会给你一个良好的开端。