繁体   English   中英

Java EE管理的容器收集操作未传播到数据库

[英]Java EE managed Container Collection operation not Propagating to DB

我将承认我最近确实很困惑,我需要退后一步,重新开始Java EE的基础知识。

在阅读了一些材料之后,我相信我可以对我的实体或集合进行一些操作,这将由Container或JPA转换为某些sql。 我尝试了一下,它按预期工作

  public List<Manufacturer> addProductByContainerManaged(Integer manufacId, Product prod){
    Manufacturer manu = this.manufacturerDao.find(manufacId);
    manu.getProductList().add(prod);
    prod.setManufacturerId(manu);
    return this.manufacturerDao.findAll();
}

但是此操作未在数据库中添加任何项目,因此我想我缺少了一些东西。

  public List<Manufacturer> addManufacturer(Manufacturer manufac){  
    List<Manufacturer> ret = this.manufacturerDao.findAll();
    ret.add(manufac);
   return ret;
}

第二个片段只是将Manufacturer manufac对象添加到Java List (请参阅: http : //docs.oracle.com/javase/7/docs/api/java/util/List.html )。 然后,您的方法将返回此列表。 只需在List元素上调用add(...) ,即可将一个元素添加到列表中。

如果要将其添加到数据库中,显然必须调用您(或任何人)在ManufacturerDAO上实现的add(...)方法,以便将其保存在数据库中(如第一个代码片段中所示)。

如果您希望第二个片段起作用,那么您必须执行以下操作:

public List<Manufacturer> addManufacturer(Manufacturer manufac){  
    this.manufacturerDao.save(manufac); //I am not sure about your api. It could be something like this.
    List<Manufacturer> ret = this.manufacturerDao.findAll();
    return ret;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM