【问题标题】:Spring framework relationship mappingSpring框架关系映射
【发布时间】:2014-01-01 09:22:09
【问题描述】:

我的类Categorie需要有多个产品,当你在jsp中点击一个类别时我需要显示产品...我试过这样:

@Entity
public class Categorie {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int categorieId;
    private String categorieName;
    @OneToMany()
    @JoinColumn(name = "CategorieNr")
    private Set<Product> products;

我的产品类别:

@Entity
@Table(name = "CentricProduct")
public class Product implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int productId;
    private int calories, productRow;
    private String description;
    private double price;

    @Override
    public boolean equals(Object object) {
    if (!(object instanceof Product)) {
    return false;
    }

    Product other = (Product) object;
    return description.equals(other.description);
    }

    @Override
    public int hashCode() {
    return description.hashCode();
}

这是我用来获取产品类别的存储库:

@Repository
public class CategoryRepository implements ICategoryRepository
{

    @PersistenceContext
    private EntityManager em;

    public CategoryRepository() {
    }

    public CategoryRepository(EntityManager em) 
    {
        this.em = em;
    }

    public void setEntityManager(EntityManager e)
    {
        this.em = e;
    }  

    @Transactional(readOnly = true)
    @Override
    public List<Categorie> findAll()
    {
        CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
        cq.select(cq.from(Categorie.class));        
        return em.createQuery(cq).getResultList();
    }

在我的jsp中:

  <h1 class="listtitle">Productenlijst</h1>
            <div id="leftlist" class="list" >     
               <c:forEach items="${products}" var="item" >                                   
               <form:form method="POST" action="shoppinglist.htm" modelAttribute="products">            
                 <input type="submit" value= "${item.categorieName}" class="productlistbtn" alt="Submit" input path="${item}" >   
               </form:form> 
                  </c:forEach>               
            </div>

【问题讨论】:

  • 标题中不需要添加major标签。

标签: java mysql spring mapping


【解决方案1】:

您的班级Product 需要声明为@Entity。 (您不能嵌入一对多关系,尤其是因为您是 Product包含它自己的 ID

【讨论】:

  • 嗯,我按照你说的那样试了一下,我已经改变了我上面的问题,你能看一下吗?我的产品仍然是空的...
  • 我还没有编写任何单元测试,但如果你愿意,我可以添加控制器和存储库代码...
  • 我添加了代码,如果你愿意,我什至想把我的项目邮寄给你,反正它是给学校的..
  • 你的数据源中有测试数据吗?
  • 是的,我将它们与产品表中的外键链接
猜你喜欢
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
相关资源
最近更新 更多