如何在JPA中使用集合来持久保存实体

时间:2015-12-08 12:40:23

标签: java jpa collections entity persistence

我正在尝试使用JPA在OneToMany关系中保留实体。我有两个实体,Proyecto(项目)和Participacion(参与)。 Proyecto可以有多个Participacion。问题是当我尝试将Participacion持久化到现有的Proyecto时。

//First, I get the selected project by the user from the database.
Proyecto proyecto = proyectoManager.getProyecto(Integer.parseInt((String) session.getAttribute("idProyecto"))); 

//Second, I create and set the Participacion parameters, including the project.
Participacion participacion = new Participacion();
participacion.setIdProyecto(proyecto);
participacion.setLogin(usuario);
participacion.setPorcParti(Integer.parseInt(request.getParameter("porc")));

//Finally I persist participacion with his respective project
proyectoManager.addParticipacion(participacion);

//Here, I'm trying to get the project to check if his Participacion collection contains the new participation.
proyecto = proyectoManager.getProyecto(Integer.parseInt((String) session.getAttribute("idProyecto")));

问题是我第二次从数据库中恢复项目,因为他的参与集合不包含新的参与。我尝试过使用edit()方法,甚至在persist()方法后刷新,但它不起作用。

下次部署企业应用程序时,该项目包含他各自的参与,包括新的参与,但我在第一次持续后需要它,而不再重新部署。

任何人都可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您如何告诉JPA您想要级联持久收藏?

我主要在我的域对象上使用注释,通常只添加如下内容:

408000

这个(或类似的)问题已在本网站上多次回答。

修改

此外,从上面的代码示例中,您似乎没有将Participation实例添加到项目中。我认为你需要这样的东西:

    @OneToMany(cascade=CascadeType.ALL)

完成协会。