我正在获取实体列表并尝试向其中添加更多值并将它们持久保存到数据库中...我在这样做时遇到了一些问题...这是我到目前为止所拥有的...
Provider prov = emf.find(Provider.class, new Long(ID));
该实体具有我要添加的多对多关系
List<Organization> orgList = new ArrayList<Organization>();
...
orgList = prov.getOrganizationList();
所以我现在有了与该实体关联的实体列表。
我搜索一些要添加的实体并将它们放在 orgList 中......
List<Organization> updatedListofOrgss = emf.createNamedQuery("getOrganizationByOrganizationIds").setParameter("organizationIds", AddThese).getResultList();
List<Organization> deleteListOfOrgs = emf.createNamedQuery("getOrganizationByOrganizationIds").setParameter("organizationIds", DeleteThese).getResultList();
orgList.addAll(updatedListofOrgss);
orgList.removeAll(deleteListOfOrgs);
如您所见,我还有一个要删除的删除节点列表。我在某处听说您不需要对此类操作调用persist,并且JPA 将自动保留。好吧,它似乎不是那样工作的。你能以这种方式坚持下去,还是我必须通过链接表实体,然后以这种方式添加这些值?
public class Provider implements Serializable {
@Id
@Column(name="RESOURCE_ID")
private long resourceId;
...
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="DIST_LIST_PERMISSION",
joinColumns=@JoinColumn(name="RESOURCE_ID"),
inverseJoinColumns=@JoinColumn(name="ORGANIZATION_ID"))
private List<Organization> organizationList;
...//getters and setters.
}
将组织和提供者链接在一起的链接表...
public class DistListPermission implements Serializable {
@Id
@Column(name="DIST_LIST_PERMISSION_ID")
private long distListPermissionId;
@Column(name="ORGANIZATION_ID")
private BigDecimal organizationId;
@Column(name="RESOURCE_ID")
private Long resourceId;
}